我有一个典型的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
我在这里错过了什么吗?