[英]On implementing Http Handler for Js extension javascript on page started to compiling
我已經為Google api托管的jquery腳本文件實現了HttpHandler for Js擴展。 因為調用它時需要用https替換http。 但是Visual Studio開始在正在加載的頁面上編譯javascript。 我該如何抑制這種行為。 最有趣的是為什么會這樣。
我的Http處理程序:
public class HttpToHttpsHandler : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
try
{
if (context.Request.RawUrl.Contains("http:"))
{
context.Response.ContentType = "text/plain";
string newUrl = context.Request.RawUrl.Replace("http", "https");
context.Server.Transfer(newUrl);
}
}
catch (Exception)
{
throw;
}
}
}
可能出了什么問題。
這是因為您使用了Server.Transfer()
,它不會發出重定向到瀏覽器的命令,但是會更改服務器上的執行路徑-結果ASP.NET將嘗試使用JavaScript創建內容。
您想進行簡單的重定向,所以只需使用Response.Redirect()
context.Response.Redirect(newUrl, false);
我也想提出一種更安全的方法來更改URL(以防URL中有端口號等):
if (!context.Request.IsSecureConnection)
{
UriBuilder secureUriBBuilder = new UriBuilder(context.Request.Url);
secureUriBBuilder.Scheme = Uri.UriSchemeHttps;
//Ude default port for schema - alter this if your server is using custom port for HTTPS
secureUriBBuilder.Port = -1;
context.Response.Redirect(secureUriBBuilder.Uri.ToString(), false);
}
還要記住,如果您要以HTTP加載HTML並嘗試僅通過HTTPS加載JavaScript,則整個頁面將保持非安全模式-您應考慮在Global.asax中重定向或使用URL重寫模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.