从理论上讲,这应该是一个相当普遍的用例。反向代理后面的.NET Web服务器,负责SSL / TLS终止。
但是出于某种神秘的原因,这对我不起作用。我使用英镑反向代理。我在配置中有以下内容。
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.
我已经搜索了很长时间以找到解决方案,但令我感到惊讶的是,没有更多的人遇到同样的问题。
问题是:我该如何解决?
最佳答案
如果反向代理设置了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