簡體   English   中英

關於實現Http Handler for Js擴展的javascript頁面開始編譯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM