gpt4 book ai didi

asp.net - Azure 应用服务 applicationHost.config 设置服务器变量正在工作但不起作用

转载 作者:行者123 更新时间:2023-12-04 03:07:57 27 4
gpt4 key购买 nike

我们正在尝试重写给定“X-CF-ORIGIN” header 的“主机” header - 这在本地有效,但是,在应用程序服务中,所有日志记录都表明它已有效,但我们似乎没有看到效果。

我们预计会因不正确的 HOST header 而收到 500 错误,但是,站点会像主机 header 未更改一样进行解析。

此外,我们的 XDT 转换表明它已经起作用(见下文)。

This was initially raised on Kudu Github但已定向至此处询问 Azure 应用服务 IIS 问题。

代码示例: https://github.com/Workshop2/webforms-host-header-rewrite-spike

实例: http://webforms-fun.azurewebsites.net/使用XDT变换

我们的重写规则:

<rule name="CDN Host Header Rewrite" stopProcessing="false">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{HTTP_X_CF_ORIGIN}" pattern="(.+)" />
</conditions>
<serverVariables>
<set name="HTTP_HOST" value="{C:1}" />
</serverVariables>
<action type="None" />
</rule>

我们的 XDT 转换:

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<rewrite>
<allowedServerVariables>
<add name="HTTP_HOST" xdt:Transform="InsertIfMissing" />
</allowedServerVariables>
</rewrite>
</system.webServer>
</configuration>

applicationHost(通过 IIS Manager 找到):

<rewrite>
<allowedServerVariables>
<add name="HTTP_HOST" />
</allowedServerVariables>
<globalRules />
<outboundRules />
<providers />
<rewriteMaps />
<rules />
</rewrite>

失败请求跟踪:

Example of header saying it's been updated

测试

如果我创建一个测试规则来证明 HTTP_HOST 正在被更改,它会通过 X-CF-ORIGIN header 正确使用 HTTP_HOST 数据集:

<rule name="test" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<add input="{HTTP_X_CF_ORIGIN}" pattern=".+" />
<add input="{HTTP_HOST}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="http://some-site.com/{C:1}" redirectType="Temporary" />
</rule>

请帮忙 - 我们错过了什么?

最佳答案

我发现 Azure 不喜欢设置 HTTP_HOST 服务器变量。如果您使用HTTP_DISGUISED_HOST,它可以正常工作

更改重写规则中的这一行:

<set name="HTTP_HOST" value="{C:1}" />

对此:

<set name="HTTP_DISGUISED_HOST" value="{C:1}" />

更改 applicationHost.xdt 中的这一行:

<add name="HTTP_HOST" xdt:Transform="InsertIfMissing" />

对此:

<add name="HTTP_DISGUISED_HOST" xdt:Transform="InsertIfMissing" />

关于asp.net - Azure 应用服务 applicationHost.config 设置服务器变量正在工作但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com