2014-03-06 22 views
1

理論上這應該是一個相當常見的用例。負責SSL/TLS終止的逆向代理背後的.NET網絡服務器。SignalR 1.x在SSL/TLS終止的反向代理之後

但由於一些神祕的原因,這不適合我。我使用龐德反向代理。我在配置中有以下內容。

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

鉻給了我一個「無法加載資源:服務器以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.

我一直在尋找好半天才找到解決的辦法,但我驚訝,有沒有更多的人有同樣的問題。

問題是:我該如何解決這個問題?

回答

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

+0

我的反向代理不添加任何內容。它所做的是刪除一個「X-Forwarded-Proto」,基本上是硬編碼https,因此IIS和SignalR(?)可以找出正確的Proto。 因爲必須使用MVC4/.NET 4.0,所以我在SignalR 1.x上不使用2.x.這意味着我無法使用Microsoft.Owin.Cors軟件包。 – Saab

+0

https://github.com/SignalR/SignalR/issues/1379,這個bug有代碼可以幫助 – davidfowl