【问题标题】:RESPONSE_SERVER rewrite rule not working for all response headersRESPONSE_SERVER 重写规则不适用于所有响应标头
【发布时间】:2019-06-23 12:34:36
【问题描述】:

我有一个在 IIS 中运行的名为 Home 的 asp.net 网站,我添加了一个重写 URL 规则以将响应标头中的服务器标记更改为 Mine。它仅适用于部分响应,而不是全部响应。

例如: https://myDomain/Home/Default.aspx 有效。 (服务器:我的) 但是https://myDomain/Home/ 不起作用(服务器:微软...)

可以在 C:\Windows\System32\inetsrv\config\applicationHost.config 中找到我的规则代码如下:

<rewrite>
        <allowedServerVariables>
            <add name="RESPONSE_SERVER" />
        </allowedServerVariables>
        <globalRules>
            <rule name="Remove Server">
                <match url=".*" />
                <serverVariables>
                    <set name="RESPONSE_SERVER" value="Mine" />
                </serverVariables>
                <action type="None" />
                <conditions>
                </conditions>
            </rule>
        </globalRules>
    </rewrite>

出于安全原因,我正在删除服务器版本,但如果它不适用于所有响应,则说明这一点。

【问题讨论】:

    标签: c# iis url-rewrite-module


    【解决方案1】:

    据我所知,如果你想修改响应头的值。我建议您可以尝试使用 url rewrite outbound 规则而不是普通规则。

    请在 application.host 文件中添加以下规则:

    <rewrite>
    
        <allowedServerVariables>
            <add name="RESPONSE_SERVER" />
        </allowedServerVariables>
        <outboundRules>
            <rule name="ModifyServer">
                <match serverVariable="RESPONSE_SERVER" pattern=".*" />
                <action type="Rewrite" value="Mine" />
            </rule>
        </outboundRules>
    </rewrite>
    

    【讨论】:

    • 它确实解决了我上面提到的问题,但是仍然有来自服务器的一种响应类型包含服务器版本:myDomain/Home/WebResource.axd 如果我转到“myDomain/Home/Default.aspx”,则会返回它或“myDomain/Home”。我研究了一下,发现是asp.net生成的资源文件。将找出我是否可以删除该响应或从中删除服务器标记。
    • WebResource.axd 响应已被缓存,因此当我清除缓存时,它起作用了。现在它完美地工作了。
    • 对于SSRS的响应重写服务器信息不起作用。
    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多