Azure网站正在删除自定义标题

Azure网站正在删除自定义标题,azure,azure-web-app-service,Azure,Azure Web App Service,我正在开发的Azure网站检查传入请求的自定义头,以决定如何在内部处理该请求。网站服务器正在发送/接收带有客户标题的请求: X-HEADER-1: ... X-HEADER-2: ... 在其他标准和非标准标题中 我通过检查FREB日志和查看GENERAL_REQUEST_头来验证这一点,它正确地包含了我的自定义头 当应用程序收到请求时,这些自定义头不存在。我显式地检查其中一个,然后在错误消息中抛出并转储所有可用的头 我已经了解到应用程序请求路由模块可以删除这些头。我尝试将此添加到网站的web

我正在开发的Azure网站检查传入请求的自定义头,以决定如何在内部处理该请求。网站服务器正在发送/接收带有客户标题的请求:

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>