Azure网站正在删除自定义标题
我正在开发的Azure网站检查传入请求的自定义头,以决定如何在内部处理该请求。网站服务器正在发送/接收带有客户标题的请求:Azure网站正在删除自定义标题,azure,azure-web-app-service,Azure,Azure Web App Service,我正在开发的Azure网站检查传入请求的自定义头,以决定如何在内部处理该请求。网站服务器正在发送/接收带有客户标题的请求: X-HEADER-1: ... X-HEADER-2: ... 在其他标准和非标准标题中 我通过检查FREB日志和查看GENERAL_REQUEST_头来验证这一点,它正确地包含了我的自定义头 当应用程序收到请求时,这些自定义头不存在。我显式地检查其中一个,然后在错误消息中抛出并转储所有可用的头 我已经了解到应用程序请求路由模块可以删除这些头。我尝试将此添加到网站的web
X-HEADER-1: ...
X-HEADER-2: ...
在其他标准和非标准标题中
我通过检查FREB日志和查看GENERAL_REQUEST_头来验证这一点,它正确地包含了我的自定义头
当应用程序收到请求时,这些自定义头不存在。我显式地检查其中一个,然后在错误消息中抛出并转储所有可用的头
我已经了解到应用程序请求路由模块可以删除这些头。我尝试将此添加到网站的web.config中,但仍然不起作用:
<system.webServer>
<rewrite>
<allowedServerVariables>
<add name="HTTP_X_HEADER_1" />
<add name="HTTP_X_HEADER_2" />
</allowedServerVariables>
</rewrite>
</system.webServer>
}
更新2
我刚刚部署了与azure云服务相同的应用程序,它运行良好。已收到标题,应用程序已成功读取它们。web应用程序的某些功能不允许这些标题通过。如果您的服务是无状态的,则可以禁用ARR。。。为此: (在web.config中)
如果您的服务是无状态的,一种可能是禁用ARR。。。为此: (在web.config中)
对我有效的答案是在评论中。归功于@Tarek Ayna 将X-LiveUpgrade设置为0时,将传输自定义标头。 例如:
<httpProtocol>
<customHeaders>
<add name="X-LiveUpgrade" value="0" />**
<!-- Prevent iframes -->
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="X-XSS-Protection" value="1" />
</customHeaders>
</httpProtocol>
**
对我有效的答案是在评论中。归功于@Tarek Ayna
将X-LiveUpgrade设置为0时,将传输自定义标头。
例如:
<httpProtocol>
<customHeaders>
<add name="X-LiveUpgrade" value="0" />**
<!-- Prevent iframes -->
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="X-XSS-Protection" value="1" />
</customHeaders>
</httpProtocol>
**
这实际上与该设置无关。ARR Affinity cookie发生在系统的负载平衡前端,与前面提到的定制headersAs@ahmelsayed无关,这与此无关。ARR关联确保同一实例处理特定会话的所有请求。这实际上与该设置无关。ARR Affinity cookie发生在系统的负载平衡前端,与前面提到的定制headersAs@ahmelsayed无关,这与此无关。ARR亲和性确保同一实例处理特定会话的所有请求。您不需要任何特殊的东西来让Azure将所有头(标准或非标准)流到您的应用程序。你能描述一下你所看到的吗?您使用的是什么应用程序框架?NET、node、PHP等。查看您试图访问这些标题的代码部分会很有用。嗯,这很奇怪。我刚刚从VS这里创建了一个香草MVC应用程序,并将您的应用程序放在这里,它可以按照您的预期工作。运行curl-Ihttps://.azurewebsites.net
返回500并运行curl-I-H“X-HEADER-1:随机值”https://.azurewebsites.net
返回200。您确实在FREB日志中看到了您的标题,对吗?请确保您不是来自web.configThans@cory fowler中带有请求筛选器的站点。我没有删除web.config中的任何标题。正如我在更新中提到的,它现在作为云服务而不是Azure网站运行良好。“我仍然需要把它移回一个网站,因为这样更经济。”艾哈迈尔萨伊德。我找到了一个解决这个问题的方法,但是没有任何文件记录。我注意到,当应用程序记录标题时,它包含一个标题X-LiveUpgrade,设置为1。我在请求中显式设置了它,并将其设置为0。现在,我所有的头都传递到应用程序。最好能得到一些关于这方面的文档。你不需要任何特殊的东西就可以让Azure将所有的头(标准或非标准)流到你的应用程序中。你能描述一下你所看到的吗?您使用的是什么应用程序框架?NET、node、PHP等。查看您试图访问这些标题的代码部分会很有用。嗯,这很奇怪。我刚刚从VS这里创建了一个香草MVC应用程序,并将您的应用程序放在这里,它可以按照您的预期工作。运行curl-Ihttps://.azurewebsites.net
返回500并运行curl-I-H“X-HEADER-1:随机值”https://.azurewebsites.net
返回200。您确实在FREB日志中看到了您的标题,对吗?请确保您不是来自web.configThans@cory fowler中带有请求筛选器的站点。我没有删除web.config中的任何标题。正如我在更新中提到的,它现在作为云服务而不是Azure网站运行良好。“我仍然需要把它移回一个网站,因为这样更经济。”艾哈迈尔萨伊德。我找到了一个解决这个问题的方法,但是没有任何文件记录。我注意到,当应用程序记录标题时,它包含一个标题X-LiveUpgrade,设置为1。我在请求中显式设置了它,并将其设置为0。现在,我所有的头都传递到应用程序。最好能得到一些关于这方面的文档。
<httpProtocol>
<customHeaders>
<add name="X-LiveUpgrade" value="0" />**
<!-- Prevent iframes -->
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="X-XSS-Protection" value="1" />
</customHeaders>
</httpProtocol>