ASP.NET拦截javascript请求/响应

时间:2014-11-26 17:21:58

标签: javascript asp.net-mvc

我有一个典型的ASP.NET MVC 4应用程序和以下场景,我无法在互联网上找到合适的解决方案。

我想做的是"拦截"特别是来自客户端的 text / javascript 请求,然后在服务器发送之前,操纵该javascript,在其中进行一些替换,然后操纵的JS被传输到客户端,好像什么也没发生

我的 cshtml 是一个简单的HTML页面,其常规脚本标记如下:

<script type="text/javascript" src="@Scripts.Url("~/Scripts/home/index.js")"></script>

它告诉浏览器要加载的脚本文件。现在浏览器要求Web服务器只提供此文件。我似乎找不到任何可以操作此特定请求的事件,模块或操作过滤器。我认为浏览器总是询问服务器,以获得任何响应(即使它是#34;未修改&#34;)。

请注意我知道如何拦截&#34;常规&#34;请求(如 text / html )并且工作得很好。但是,我似乎无法找到拦截任何其他请求的方法,例如提到的text / javascript甚至图像。

我期待听到您的意见。

编辑:我尝试使用David的答案并创建了我自己的IHttpHandler,但在那里我没有得到我想要的请求,而且现在它正在剥离所有的JS-要求。这是我的web.config:

<add name="LocalizerHandler" path="*.js" verb="*" type="Website.Utility.LocalizerHttpHandler, Website" />

这是我的经纪人:

    class LocalizerHttpHandler : IHttpHandler
    {
        #region IHttpHandler Members

        bool IHttpHandler.IsReusable
        {
            get { return true; }
        }

        void IHttpHandler.ProcessRequest(HttpContext context)
        {
            Trace.WriteLine(string.Format("ProcessRequest: Req/Resp.: {0} - {1}", context.Request.ContentType, context.Response.ContentType));

            if (context.Request.ContentType.Contains("java") ||
                context.Response.ContentType.Contains("java"))
            {

            }
        }

        #endregion
    }

它仅在带有<script>标记的页面上输出以下内容:

  

ProcessRequest:Req / Resp。: - text / html

     

ProcessRequest:Req / Resp。: - text / html

     

ProcessRequest:Req / Resp。: - text / html

     

ProcessRequest:Req / Resp。: - text / html

     

ProcessRequest:Req / Resp。: - text / html

我在这里错过了什么吗?

0 个答案:

没有答案