我被一个简单的出站规则所困扰,我想将HTTP Content-Type 修改为 application / atom + xml ,如果URL完全匹配{{3 }}
我的规则XML:
<outboundRules>
<rule name="AtomFeedsIMEType" patternSyntax="ExactMatch">
<match serverVariable="RESPONSE_CONTENT_TYPE" pattern="http://{HTTP_HOST}/Feeds/Atom" />
<action type="Rewrite" value="application/atom+xml" />
</rule>
需要帮助......
答案 0 :(得分:6)
您将服务器变量与完整URL匹配,包括域名。这不会起作用;-)。 Content-Type的价值是什么并不重要,无论如何你都要替换它,所以你可以匹配任何东西。要确保不在每个页面上替换它,您需要添加前提条件以仅匹配以/ Feeds / Atom开头的请求(在{REQUEST_URI}上)。这是一个例子:
<outboundRules>
<rule name="AtomFeedsIMEType" preCondition="Match atom feeds">
<match serverVariable="RESPONSE_Content_Type" pattern="(.*)" negate="false" />
<action type="Rewrite" value="application/atom+xml" replace="true" />
</rule>
<preConditions>
<preCondition name="Match atom feeds">
<add input="{REQUEST_URI}" pattern="^/Feeds/Atom" />
</preCondition>
</preConditions>
</outboundRules>
为此,必须设置服务器以允许更改Content-Type标头。这可以在服务器级别或站点级别完成,但需要由管理员完成。它在applicationHost.config中设置,而不是在web.config中设置。以下是applicationHost.config的一部分,它允许:
<location path="your_site_name">
<system.webServer>
<rewrite>
<allowedServerVariables>
<add name="CONTENT_TYPE" />
</allowedServerVariables>
</rewrite>
</system.webServer>
</location>
您也可以从GUI允许此操作,在主URLRewrite屏幕的操作下使用View Server Variables链接。希望这会有所帮助。