?

在Web開(kāi)發(fā)中,域訪(fǎng)跨域訪(fǎng)問(wèn)是問(wèn)報一種(zhong)常見(jiàn)的需求,但由于同源策略(Sameorigin policy)的域訪(fǎng)限制,Web瀏覽器出于安全(′_`)考慮,問(wèn)報默認禁止頁(yè)面請求不同源的域訪(fǎng)資源,同源策略指的問(wèn)報是,協(xié)議、域訪(fǎng)域名和端口都相同的問(wèn)報兩個(gè)頁(yè)面,才允許相互訪(fǎng)問(wèn)資源和操作DOM,域訪(fǎng)當嘗試進(jìn)行跨域請求時(shí),問(wèn)報瀏覽器會(huì )阻??止這個(gè)請求,域訪(fǎng)(//ω//)并拋出一個(gè)錯誤,問(wèn)報通常被稱(chēng)為“跨域訪(fǎng)問(wèn)錯誤”。域訪(fǎng)
(圖片來(lái)源網(wǎng)絡(luò ),問(wèn)報侵刪)所謂的域訪(fǎng)跨域,即協(xié)議、ヾ(′▽?zhuān)??域名(或ip地址)、端口三者之間任意一個(gè)不同,都可以被認為是跨域。(′?ω?`)http:/??/www.example.com 和 http(?????)s://w?????ww.exampl(′ω`)e.com 由于協(xié)議不同,是跨域;http://www??.example.com 和 http://sub.example.com 由于域名不同,也是跨域;即便是同一域名下,端口ヾ(′▽?zhuān)??不同也會(huì )造成跨域,如 http://www.example.com:80(′?ω?`)80 和 http://www.example.com:9090。
以下是關(guān)于跨域訪(fǎng)問(wèn)報錯的詳??細解釋?zhuān)?/span>
當頁(yè)面嘗試請求跨域資源時(shí),瀏覽器通常會(huì )拋出一個(gè)類(lèi)似如下的錯誤信息:
“`
XMLHttpRequest cannot loa(′?`*)d http://otherdomain.c??om/data(◎_◎;).json.
No ‘AccessControlAllowOrigin’ header is present on the requested resource.
Origi??n ‘http://example.com’ is th??erefore not allowed access(//ω//).
“`
這意味著(zhù)請求的資源??沒(méi)有返回適當的CORS(跨源資源共享)頭部,使得瀏覽器遵循同源策略,阻止了該請求。
2、錯誤原因:
同源策略是瀏覽器安全模型的核心部分,它防止惡意網(wǎng)站讀取其他網(wǎng)站的敏感數據。
跨域請求可能被用于執行CSRF(跨站請求偽造)攻擊,瀏覽器通過(guò)限制跨域請求來(lái)防止這類(lèi)攻擊。
3、解決方案:
盡管跨域請求被瀏覽器默認??禁止,但ヽ(′▽?zhuān)?ノ開(kāi)發(fā)者可以通過(guò)ヾ(?■_■)ノ以下方法實(shí)現跨域數(′▽?zhuān)?)據交換:
AccessControlAllowOrigin頭部,允許特定的外部域訪(fǎng)問(wèn)(′?`*)資源,可??以設置為某個(gè)具體的域名(ming),或者使用*允許任何域名的訪(fǎng)問(wèn)。
<script>標簽沒(méi)有跨域限制的原理,通過(guò)動(dòng)態(tài)創(chuàng )建scrヾ(′ω`)?ipt標簽的方式發(fā)送HTTP請求,服務(wù)器返回的響(xiang)應通常是一個(gè)函數調用的形式,其中??包含需要的數據。
代理服務(wù)器:通過(guò)在同源服務(wù)器上設置一個(gè)代理服務(wù),轉(′ω`)發(fā)請求到其他域名的(???)服務(wù)器上,從而繞過(guò)瀏覽器的同源策略。
document.domain:對于(′▽?zhuān)?主域相同,但子域不同的請求,可以通過(guò)設置document.domain來(lái)允許跨子域請求。
window.postMessage:HTML5引入的API,允許來(lái)自不同源的窗口之間進(jìn)行消息傳遞。
服??務(wù)器端代理:在服務(wù)器端發(fā)起請求,獲取數據后再返回給客戶(hù)端,客戶(hù)端實(shí)際上并沒(méi)有跨域請求。
4、注意事項:
使用CORS時(shí),對于攜帶憑證(如Cookies)的請求,需要設置AccessControlAllowCredentials頭部,且不能使用*通配符。
JSONP僅支持GET請求,且缺乏錯誤處理機制(′▽?zhuān)?。
使用代理服務(wù)器或服務(wù)器端代理時(shí),要注意(T_T)不要引入額外的安全風(fēng)ヾ(^-^)ノ險,如中間人(ren)攻擊。
5、安全考量:
對于跨域請求,服務(wù)器應盡量限制允許訪(fǎng)問(wèn)的ヾ(′▽?zhuān)??源,避免開(kāi)放給所有外部域。
任何允許跨域請求的資源,都應該實(shí)施適當的認證ヽ(′▽?zhuān)?ノ和授權措施。
友情鏈接: 河間派翔網(wǎng)絡(luò )科技有限公司泰興實(shí)順網(wǎng)絡(luò )科技有限公司新疆昌吉博具網(wǎng)絡(luò )科技有限公司江都凱相網(wǎng)絡(luò )科技有限公司盤(pán)錦愛(ài)網(wǎng)網(wǎng)絡(luò )科技有限公司宜城振白網(wǎng)絡(luò )科技有限公司新疆奎屯升語(yǔ)網(wǎng)絡(luò )科技有限公司義烏士圓網(wǎng)絡(luò )科技有限公司北京貝中網(wǎng)絡(luò )科技有限公司崇州貴曼網(wǎng)絡(luò )科技有限公司沁陽(yáng)潤越網(wǎng)絡(luò )科技有限公司雷州思馳網(wǎng)絡(luò )科技有限公司揚州川詩(shī)網(wǎng)絡(luò )科技有限公司明光鐵寶網(wǎng)絡(luò )科技有限公司臨安大亞網(wǎng)絡(luò )科技有限公司撫順巨建網(wǎng)絡(luò )科技有限公司舞鋼西蘇網(wǎng)絡(luò )科技有限公司中山博具網(wǎng)絡(luò )科技有限公司黃岡博絲網(wǎng)絡(luò )科技有限公司丹東艾賽網(wǎng)絡(luò )科技有限公司蘭州萬(wàn)相網(wǎng)絡(luò )科技有限公司牡丹江識東網(wǎng)絡(luò )科技有限公司內蒙烏海陸龍網(wǎng)絡(luò )科技有限公司三明日環(huán)網(wǎng)絡(luò )科技有限公司淄博艾廣網(wǎng)絡(luò )科技有限公司地級及以上城:理領(lǐng)網(wǎng)絡(luò )科技有限公司岑溪士圓網(wǎng)絡(luò )科技有限公司哈爾濱發(fā)至網(wǎng)絡(luò )科技有限公司棗莊正友網(wǎng)絡(luò )科技有限公司沁陽(yáng)開(kāi)成網(wǎng)絡(luò )科技有限公司四會(huì )名信網(wǎng)絡(luò )科技有限公司新疆克拉瑪依紐復網(wǎng)絡(luò )科技有限公司大理生洲網(wǎng)絡(luò )科技有限公司清遠藍萊網(wǎng)絡(luò )科技有限公司邵武隆羅網(wǎng)絡(luò )科技有限公司海門(mén)旺倍網(wǎng)絡(luò )科技有限公司河間潤正網(wǎng)絡(luò )科技有限公司珠海木月網(wǎng)絡(luò )科技有限公司上海鼎風(fēng)網(wǎng)絡(luò )科技有限公司常寧圓元網(wǎng)絡(luò )科技有限公司
© 2013-2025.Company name All rights reserved.網(wǎng)站地圖 天津九安特機電工程有限公司-More Templates