如何在服务器变量IIS URL重写中传递带下划线的标头?

时间:2016-09-09 06:36:13

标签: asp.net iis url-rewriting iis-7 reverse-proxy

我正在将我的网站重写为diff url,我必须传递标题。

所以一切都很好。但是一个标题名称带有下划线(_)。

    <rewrite>
        <rules>
            <rule name="ReverseProxyInboundRule2" patternSyntax="Wildcard" stopProcessing="false">
                <match url="*core*" />
                <action type="Rewrite" url="http://xxxxxxx/yyyyy/core{R:2}" logRewrittenUrl="true" />
                <serverVariables>
                    <set name="HTTP_name" value="name" />
                    <set name="HTTP_address" value="address" />
                    <set name="HTTP_phone_number" value="1234567890" />
                </serverVariables>
            </rule>
        </rules>
        <outboundRules>
            <preConditions>
                <preCondition name="ResponseIsHtml1">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>  

所有下划线(phone_number)都将转换为连字符(电话号码),因此不会传递所需的标题。

我必须传递phone_number

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

最后我找到了答案。我必须像HEADER_phone_number一样传递。

refer 了解更多详情。

HEADER_HeaderName(IIS 5.1及更早版本:此服务器变量不可用):

标题中存储的值。除此表中列出的标题之外的任何标题必须以&#34; HEADER _&#34;开头。以便ServerVariables集合检索其值。这对于检索自定义标头很有用。 注意: 与HTTP_不同,HEADER_中的所有字符都按原样解释。例如,如果指定HEADER_MY_HEADER,则服务器将搜索名为MY_HEADER的请求标头。

HTTP_HeaderName:

标题中存储的值。除此表中列出的标题之外的任何标题必须以&#34; HTTP _&#34;开头。以便ServerVariables集合检索其值。这对于检索自定义标头很有用。 注意: 服务器将任何下划线(_)字符解释为实际标题中的破折号。例如,如果指定HTTP_MY_HEADER,则服务器将搜索名为MY-HEADER的请求标头。