【问题标题】:IIS UrlRewrite Not Working on 404 RequestsIIS UrlRewrite 无法处理 404 请求
【发布时间】:2016-05-09 19:30:52
【问题描述】:

我正在尝试从 IIS 8.0 中删除“服务器”标头。我已经安装了 UrlRewrite 并将以下代码添加到我的 web.config:

<rewrite>
  <outboundRules rewriteBeforeCache="true">
    <rule name="Remove Server header">
      <match serverVariable="RESPONSE_Server" pattern=".+" />
      <action type="Rewrite" value="" />
    </rule>
  </outboundRules>
</rewrite>

但是,当请求进入并生成 404 时,仍会包含“Server”标头。

关于如何解决此问题的任何建议?

我正在使用在带有 IIS 8 的 Windows Server 2012 上运行的 Web API 2。

【问题讨论】:

    标签: iis http-headers asp.net-web-api2


    【解决方案1】:

    首先在管道中添加一个 owin 中间件:

    public void Configuration(IAppBuilder app)
    {
        app.Use(async (ctx, next) =>
        {
            ctx.Response.OnSendingHeaders(state =>
            {
                var res = (OwinResponse)state;
                res.Headers.Remove("Server");
            }, ctx.Response);
    
            await next();
        });
    
        //...
    }
    

    【讨论】:

    • 我已经有了,它非常适合 API 调用,但它不会受到静态内容(即 .js、.html、.css 等)的影响。
    • 尝试将runAllManagedModulesForAllRequests=true 添加到您的Web.config 中的&lt;modules&gt; 部分
    • 我读过的所有内容都说打开它会对性能产生很大影响,不推荐。
    猜你喜欢
    • 2014-07-02
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多