Azure网站上的ARR反向代理删除了WebSockets响应头“Sec-WebSocket-Accept”

时间:2015-01-16 19:57:19

标签: iis azure reverse-proxy arr

我试图在Azure网站内设置ARR。我在Azure VM上有一个可行的实现,但是想转移到一个网站,所以我不必主动管理VM。

我遇到的问题特定于SignalR WebSockets连接请求和通过我的ARR反向代理的响应。

在通过IIS请求跟踪通过ARR之前在服务器上的响应:

Upgrade: Websocket
Server: Microsoft-IIS/8.0
X-Content-Type-Options: nosniff
X-Powered-By: ASP.NET
X-Powered-By: ARR/3.0
Sec-WebSocket-Accept: IVoaaOhRLbaSxQzHV1TRkwHbtFc=**
Connection: Upgrade
X-FE-DATA: AppId:Unknown-StatusCode
X-Powered-By: ASP.NET
DWAS-Handler-Name: EXECUTE|101|0|0x0|CONFIG_SUCCESS|ApplicationRequestRoutingHandler|::1|\\100.68.100.59\volume-21-default\be0a77feeba577989612\3323291baecf417bb67a391f58af8a90\

客户看到的响应:

HTTP/1.1 101 Switching Protocols
Upgrade: Websocket
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
X-Powered-By: ARR/3.0
X-Powered-By: ASP.NET
Connection: Upgrade

正如您所看到的,Sec-WebSocket-Accept标头正在从响应中删除。这意味着客户端连接失败,默认为长轮询,而不是websockets协议。

知道为什么删除这个标题?正在使用ARR 3.0,它支持本机websockets,并且在Azure网站配置面板中启用了websockets。

1 个答案:

答案 0 :(得分:1)

您是否指定了标志为preserveHostHeaders =" true"在代理配置?

 <proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="true" reverseRewriteHostInResponseHeaders="true" />