2017-05-04 45 views
0

我們後面的負載平衡器的IIS服務器上託管我們的網站。 LB執行SSL卸載,其後面的所有內容都會與HTTP進行通信。AJAX調用與相對URL訪問http一個網站通過HTTPS提供

的問題是,在使用相對URL而此時回到同一Web服務器所服務的頁面AJAX請求正在嘗試通過HTTP進行連接,而不是HTTPS。這違反了我們的CSP政策,並且由於混合內容通常無法呈現。如果這些URL在客戶端的瀏覽器上解析,爲什麼會發生這種情況?

的URL目前的樣子:

url: '/controller/someaction' 

其中一個頁面上,如https://host/controller/action試圖調用http://host/controller/someaction

如果我們使用協議的相對路徑:

url: '//controller/someaction' 

我們失去主機完全和它試圖調用https://controller/someaction

設置當前導致無限重定向循環的upgrade-insecure-請求存在問題。這是對這個問題的長期解決方案,但補充說響應頭引入了比短期內解決的問題更多的問題。可能有一個涉及ajaxSetup/beforeSend的修改URL,但感覺真的很髒。我們可以遍歷整個代碼庫,並更改網址的「https://」 + windows.location.host +「/控制器/ someaction」,但那種感覺髒耗時。

一個搜索顯示的行爲可能會有所不同,如果該URL(電流或要求)以「/」結束,但實驗表明,我們看到了所有組合相同的行爲。

任何想法爲什麼會發生這種情況?我們寧可不改變SSL卸載行爲,但如果它是唯一的選擇,則可以。

+0

看看其他一些答案,他們建議由於某種原因添加斜線,可能至少值得一試。所以改變你的網址爲''/ controller/someaction /'' – George

+0

我提到過我沒有成功嘗試過。不過謝謝。 – JRoughan

+0

對不起,我沒有完整閱讀這個問題 – George

回答

0

我最好的猜測是,禁用SSL卸載將爲您解決這個問題,負載均衡器後面的服務器無法知道用HTTPS做出響應,瀏覽器將阻止HTTP響應和繁榮,在那裏。

相關問題