2014-03-06 4 views
1

이론적으로 이는 상당히 일반적인 경우입니다. SSL/TLS 종료를 담당하는 역방향 프록시 뒤의 .NET 웹 서버.SSL/TLS 터미네이션을 수행하는 역방향 프록시 뒤에있는 SignalR 1.x

그러나 일부 신비한 이유 때문에 나를 위해 작동하지 않습니다. 파운드 역방향 프록시를 사용합니다. 그리고 구성에 다음과 같은 내용이 있습니다. 크롬이 나에게주는

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

「자원을로드 할 수 없습니다 : (: 사용하지 SignalR 크로스 도메인. 금지됨) 서버 (403)의 상태로 반응 ".

은 Web.config의에서 나는 내가 어떤 크로스 도메인 요청을하고 있지 않다 때문에 나는, CORS를 필요가 없습니다의 system.webServer

에 대한 이해하려면
<httpProtocol>s 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="https://some.domain.fake" /> 
    </customHeaders> 
</httpProtocol> 

에 따라 추가했습니다. 내가 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.

나는 해결책을 찾기 위해 꽤 검색되었습니다하지만 놀랄거야이 없다 같은 문제에 더 많은 사람들이.

질문 : 어떻게 수정합니까?

답변

0

역방향 프록시가 Origin 헤더를 설정하는 경우 서버는이를 CORS 요청으로 해석합니다.

오리진 헤더에서 역방향 프록시가 설정 한 모든 원본의 CORS 요청을 허용하려면 아마도 Microsoft.Owin.Cors NuGet package을 사용해야합니다.

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

+0

내 역방향 프록시는 아무 것도 추가하지 않습니다. 그것이하는 것은 "X-Forwarded-Proto"를 제거하고 기본적으로 https를 하드 코드하기 때문에 IIS와 SignalR (?)이 올바른 Proto를 알아낼 수 있습니다. MVC4/.NET 4.0에서 작동해야하므로, 2.x가 아닌 SignalR 1.x에 있습니다. 즉 Microsoft.Owin.Cors 패키지를 사용하지 않습니다. – Saab

+0

https://github.com/SignalR/SignalR/issues/1379,이 버그에는 도움이 될 수있는 코드가 있습니다. – davidfowl