摘要:因?yàn)轫?yè)面通過(guò)加載的初始請(qǐng)求是安全的,但是又加載了不安全的內(nèi)容,因此稱(chēng)之為混合內(nèi)容。但是即使顯示警告,頁(yè)面也已經(jīng)加載,用戶的安全仍然受到了威脅。這就是頁(yè)面為什么發(fā)送不了的原因。
我們都知道HTTPS的頁(yè)面是發(fā)送不了HTTP請(qǐng)求的,那么是什么原因?qū)е翲TTPS頁(yè)面不能發(fā)送HTTP請(qǐng)求呢?如果有發(fā)送的需求,怎么樣才能發(fā)送?最近剛好遇到了這個(gè)問(wèn)題,而且搜了半天沒(méi)搜到靠譜的答案,所以有了本文。1. 故事起源
我在《Jquery ajax, Axios, Fetch區(qū)別之我見(jiàn)》中提到過(guò),F(xiàn)etch作為一種不同于XHR的請(qǐng)求方式,展示了它更多API,以及符合ES規(guī)范的良好前景;更不用說(shuō)它可以支持POST跨域。剛好工作上有用post方法上報(bào)效果數(shù)據(jù)的請(qǐng)求,我小手一揮,不用后臺(tái)兄弟們麻煩了,我可以搞定,把效果上報(bào)換成了Fetch,美滋滋。
過(guò)了一段時(shí)間,后臺(tái)跑過(guò)來(lái)說(shuō),現(xiàn)在還有些其他HTTP站點(diǎn)的數(shù)據(jù)上報(bào)。我試了一下,移動(dòng)端根本就沒(méi)有發(fā)出這個(gè)請(qǐng)求,這……
2. 為什么HTTPS頁(yè)面發(fā)送不了HTTP請(qǐng)求有些人說(shuō)是跨域問(wèn)題,真的是這樣嗎?
同源策略:1. 協(xié)議相同 2. 域名相同 3.端口相同
盡管HTTPS訪問(wèn)HTTP確實(shí)不符合同源策略中的協(xié)議相同,但是在現(xiàn)代瀏覽器里,即使是域名相同的請(qǐng)求,也是會(huì)出現(xiàn)以下報(bào)錯(cuò),而不是跨域報(bào)錯(cuò)。
這也很好理解,畢竟混合內(nèi)容的安全策略是在瀏覽器端判定的,而是否能跨域要看服務(wù)器返回的Response頭,請(qǐng)求都被瀏覽器block掉了,也就不存在是否跨域的問(wèn)題。
那什么是混合內(nèi)容?
混合內(nèi)容:初始 HTML 內(nèi)容通過(guò)安全的 HTTPS 連接加載,但其他資源(例如,圖像、視頻、樣式表、腳本)則通過(guò)不安全的 HTTP 連接加載[1]。因?yàn)轫?yè)面通過(guò) HTTPS 加載的初始請(qǐng)求是安全的,但是又加載了不安全的HTTP內(nèi)容,因此稱(chēng)之為混合內(nèi)容。
因?yàn)镠TTPS的S本身就是Secure的意思,現(xiàn)代瀏覽器最初會(huì)針對(duì)此類(lèi)型的內(nèi)容顯示警告,以向用戶表明此頁(yè)面包含不安全的資源。但是即使顯示警告,頁(yè)面也已經(jīng)加載,用戶的安全仍然受到了威脅。所以沒(méi)過(guò)多久,Chrome和Firefox就直接阻斷掉了這類(lèi)的請(qǐng)求。
這就是HTTPS頁(yè)面為什么發(fā)送不了HTTP的原因。
2. 突破方式盡管現(xiàn)在主流瀏覽器都已經(jīng)block掉了HTTPS頁(yè)面上的HTTP請(qǐng)求,但是我們還是可以通過(guò)被動(dòng)混合內(nèi)容來(lái)發(fā)送get請(qǐng)求。
被動(dòng)混合內(nèi)容:指的是不與頁(yè)面其余部分進(jìn)行交互的內(nèi)容,包括圖像、視頻和音頻內(nèi)容 ,以及無(wú)法與頁(yè)面其余部分進(jìn)行交互的其他資源。主動(dòng)混合內(nèi)容: 指的是能與頁(yè)面交互的內(nèi)容,包括瀏覽器可下載和執(zhí)行的腳本、樣式表、iframe、flash 資源及其他代碼。[1]
因?yàn)楣粽呖梢酝ㄟ^(guò)不安全的HTTP內(nèi)容來(lái)攻擊安全的HTTPS頁(yè)面,所以這類(lèi)請(qǐng)求被嚴(yán)格阻斷掉了————這也是為什么我們的Fetch請(qǐng)求被干掉了。所以我們可以在迫不得已的情況下,用img.src的方式來(lái)發(fā)送請(qǐng)求。當(dāng)然,請(qǐng)求方法只能是get。
sendHttpRequest: () => { const img = new Image(); img.src = "http://xxx.com//你的請(qǐng)求" }
這時(shí)候,瀏覽器只會(huì)在控制臺(tái)報(bào)warning,而不會(huì)block我們的請(qǐng)求。
總結(jié)出于HTTPS的安全策略,瀏覽器會(huì)阻斷HTTPS上的非安全請(qǐng)求(HTTP)請(qǐng)求,但是我們可以使用被動(dòng)混合內(nèi)容的方式來(lái)跨越這個(gè)安全策略。
參考文章:《什么是混合內(nèi)容》
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/95334.html
摘要:明文協(xié)議的缺陷是導(dǎo)致數(shù)據(jù)泄露數(shù)據(jù)篡改流量劫持釣魚(yú)攻擊等安全問(wèn)題的重要原因。不驗(yàn)證通信方的身份,因此有可能遭遇偽裝協(xié)議中的請(qǐng)求和響應(yīng)不會(huì)對(duì)通信方進(jìn)行確認(rèn)。數(shù)字簽名能確定消息的完整性證明數(shù)據(jù)是否未被篡改過(guò)。 近幾年,互聯(lián)網(wǎng)發(fā)生著翻天覆地的變化,尤其是我們一直習(xí)以為常的HTTP協(xié)議,在逐漸的被HTTPS協(xié)議所取代,在瀏覽器、搜索引擎、CA機(jī)構(gòu)、大型互聯(lián)網(wǎng)企業(yè)的共同促進(jìn)下,互聯(lián)網(wǎng)迎來(lái)了HTTP...
摘要:明文協(xié)議的缺陷是導(dǎo)致數(shù)據(jù)泄露數(shù)據(jù)篡改流量劫持釣魚(yú)攻擊等安全問(wèn)題的重要原因。也就是說(shuō)加上加密處理和認(rèn)證以及完整性保護(hù)后即是。數(shù)字簽名能確定消息的完整性證明數(shù)據(jù)是否未被篡改過(guò)。 前言 近幾年,互聯(lián)網(wǎng)發(fā)生著翻天覆地的變化,尤其是我們一直習(xí)以為常的HTTP協(xié)議,在逐漸的被HTTPS協(xié)議所取代,在瀏覽器、搜索引擎、CA機(jī)構(gòu)、大型互聯(lián)網(wǎng)企業(yè)的共同促進(jìn)下,互聯(lián)網(wǎng)迎來(lái)了HTTPS加密時(shí)代,HTTPS將...
摘要:明文協(xié)議的缺陷是導(dǎo)致數(shù)據(jù)泄露數(shù)據(jù)篡改流量劫持釣魚(yú)攻擊等安全問(wèn)題的重要原因。也就是說(shuō)加上加密處理和認(rèn)證以及完整性保護(hù)后即是。數(shù)字簽名能確定消息的完整性證明數(shù)據(jù)是否未被篡改過(guò)。 前言 近幾年,互聯(lián)網(wǎng)發(fā)生著翻天覆地的變化,尤其是我們一直習(xí)以為常的HTTP協(xié)議,在逐漸的被HTTPS協(xié)議所取代,在瀏覽器、搜索引擎、CA機(jī)構(gòu)、大型互聯(lián)網(wǎng)企業(yè)的共同促進(jìn)下,互聯(lián)網(wǎng)迎來(lái)了HTTPS加密時(shí)代,HTTPS將...
閱讀 3680·2021-11-24 10:25
閱讀 2677·2021-11-24 09:38
閱讀 1303·2021-09-08 10:41
閱讀 3073·2021-09-01 10:42
閱讀 2726·2021-07-25 21:37
閱讀 2057·2019-08-30 15:56
閱讀 975·2019-08-30 15:55
閱讀 2814·2019-08-30 15:54