反向代理后面的SignalR 1.x执行SSL / TLS终止

时间:2014-03-06 22:09:23

标签: asp.net-mvc-4 ssl signalr reverse-proxy

理论上,这应该是一个相当常见的用例。反向代理后面的.NET Web服务器,负责SSL / TLS终止。

但出于某种神秘的原因,这对我不起作用。我用Pound反向代理。我在配置中有以下内容。

HeadRemove  "X-Forwarded-Proto"
AddHeader   "X-Forwarded-Proto: https"

Chrome为我提供了“无法加载资源:服务器响应状态为403(禁用:SignalR跨域已禁用。)”。

在web.config中,我已将以下内容添加到system.webServer

<httpProtocol>s
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="https://some.domain.fake" />
  </customHeaders>
</httpProtocol>

根据我的理解,我不应该需要CORS,因为我没有做任何跨域请求。请注意,如果我使用非SSL uri,一切正常。

以下错误似乎是相关的,但它们应该是固定的,并且与我遇到的问题不完全相同。 Bug with same origin check behind reverse proxies/load balancers etc. Bug with same origin check behind reverse proxies/load balancers for SSL requests.

我一直在寻找解决方案,但我很惊讶没有更多人遇到同样的问题。

问题是:我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果您的反向代理正在设置Origin标头,则服务器会将其解释为CORS请求。

您可能需要使用Microsoft.Owin.Cors NuGet package来允许来自您的反向代理在Origin标头中设置的任何来源的CORS请求。

http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#crossdomain