簡體   English   中英

具有相對URL的AJAX調用將通過HTTPS服務的網站的HTTP傳遞給

[英]AJAX calls with relative URLs are going to HTTP for a site served over HTTPS

我們將站點托管在負載均衡器后面的IIS服務器上。 LB執行SSL卸載,其背后的所有內容都使用HTTP。

問題在於,使用相對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-requests存在一個問題,該問題當前會導致無限重定向循環。 從長遠來看,這可能是解決問題的方法,但是添加響應頭會帶來比短期內解決的問題更多的問題。 可能存在涉及ajaxSetup / beforeSend的黑客來修改URL,但這確實很臟。 我們可以遍歷整個代碼庫,並將URL更改為'https://'+ windows.location.host +'/ controller / someaction',但這感覺很臟而且很耗時。

搜索表明,如果URL(當前URL或請求URL)以“ /”結尾,則行為可能會有所不同,但實驗表明,在所有組合中我們都看到相同的行為。

知道為什么會這樣嗎? 我們寧願不更改SSL卸載行為,但如果它是唯一的選擇,則可以。

我最好的猜測是,禁用SSL卸載將為您解決此問題,負載平衡器背后的服務器無法知道將使用HTTPS進行響應,瀏覽器將阻止HTTP響應並迅速發展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM