摘要:由于瀏覽器的同源策略導(dǎo)致無(wú)法直接通過(guò)拿到后臺(tái)數(shù)據(jù)。目前,如果非同源,共有三種行為受到限制。此處應(yīng)有掌聲參考關(guān)于跨域資源共享和瀏覽器的同源策略限制的具體講解。
工作中,經(jīng)常會(huì)遇到需要跨域請(qǐng)求數(shù)據(jù)的情況。由于瀏覽器的同源策略,導(dǎo)致無(wú)法直接通過(guò)ajax拿到后臺(tái)數(shù)據(jù)。解決這個(gè)問(wèn)題的方式之一就是JSONP。還有一種方式更高效簡(jiǎn)單——跨域資源共享(Cross-origin Resource Sharing ),采用這種方式,前端不需要做任何的修改,和平時(shí)一樣寫(xiě)ajax方法,就能夠拿到后臺(tái)數(shù)據(jù)。同源策略(same-origin policy)—— 瀏覽器安全的基石。 含義:
1995年,同源政策由Netscape 公司引入瀏覽器。目前,所有瀏覽器都實(shí)行這個(gè)政策。最初的含義是指A網(wǎng)頁(yè)cookie,B網(wǎng)頁(yè)不能打開(kāi),除非這A、B兩個(gè)頁(yè)面同源。所謂同源指的是三個(gè)相同。協(xié)議相同,域名相同,端口相同。
舉例來(lái)說(shuō),現(xiàn)在打開(kāi)的頁(yè)面是http://www.baidu.com網(wǎng)址。同源情況如下:
https://www.baidu.com // 不同源(協(xié)議不同) http://wenku.baidu.com // 不同源(域名不同) http://www.baidu.com:8080 // 不同源(端口不同) http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0 //同源目的:
保證用戶信息安全,防止網(wǎng)站數(shù)據(jù)的竊取。
設(shè)想這樣一種情況:A網(wǎng)站是一家銀行,用戶登錄以后,又去瀏覽其他網(wǎng)站。如果其他網(wǎng)站可以讀取A網(wǎng)站的 Cookie,會(huì)發(fā)生什么?
很顯然,如果 Cookie 包含隱私(比如存款總額),這些信息就會(huì)泄漏。更可怕的是,Cookie 往往用來(lái)保存用戶的登錄狀態(tài),如果用戶沒(méi)有退出登錄,其他網(wǎng)站就可以冒充用戶,為所欲為。因?yàn)闉g覽器同時(shí)還規(guī)定,提交表單不受同源政策的限制。
由此可見(jiàn),"同源政策"是必需的,否則 Cookie 可以共享,互聯(lián)網(wǎng)就毫無(wú)安全可言了。
限制范圍:隨著互聯(lián)網(wǎng)的發(fā)展,"同源政策"越來(lái)越嚴(yán)格。目前,如果非同源,共有三種行為受到限制。
//(1) Cookie、LocalStorage 和 IndexDB 無(wú)法讀取。 //(2) DOM 無(wú)法獲得。 //(3) AJAX 請(qǐng)求不能發(fā)送。跨域資源共享(Cross-origin resource sharing)
跨域資源共享(CORS)是一個(gè)W3C標(biāo)準(zhǔn),它允許瀏覽器向跨源服務(wù)器發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制。簡(jiǎn)介:
CORS需要瀏覽器和服務(wù)器同時(shí)支持。目前,所有瀏覽器都支持該功能,IE瀏覽器不能低于IE10。
整個(gè)CORS通信過(guò)程,都是瀏覽器自動(dòng)完成,不需要用戶參與。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),CORS通信與同源的AJAX通信沒(méi)有差別,代碼完全一樣。瀏覽器一旦發(fā)現(xiàn)AJAX請(qǐng)求跨源,就會(huì)自動(dòng)添加一些附加的頭信息,有時(shí)還會(huì)多出一次附加的請(qǐng)求,但用戶不會(huì)有感覺(jué)。
因此,實(shí)現(xiàn)CORS通信的關(guān)鍵是服務(wù)器。只要服務(wù)器實(shí)現(xiàn)了CORS接口,就可以跨源通信。
簡(jiǎn)單的說(shuō),遇到再遇到跨域問(wèn)題,如果通過(guò)CORS來(lái)解決的話,前端工作者正常些AJAX就可以了。^_^ (此處應(yīng)有掌聲!!!)參考
關(guān)于跨域資源共享(CORS)和 瀏覽器的同源策略限制的具體講解。已經(jīng)有很多大神寫(xiě)過(guò)文章博客。在這里就不再班門(mén)弄斧了。有興趣的同學(xué)可以根據(jù)以下兩個(gè)鏈接深入研究下。
跨域資源共享 CORS 詳解
瀏覽器同源政策及其規(guī)避方法
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/95532.html
摘要:扯了這么多,自然不是為了吹水,而是要為了引出前端開(kāi)發(fā)的一個(gè)重要的知識(shí)點(diǎn)同源策略什么是同源策略出于保護(hù)用戶信息安全的目的,現(xiàn)在的瀏覽器都會(huì)實(shí)施同源策略這個(gè)政策,所謂同源策略指的是不同源的客戶端腳本在沒(méi)有明確授權(quán)情況下,不允許讀寫(xiě)對(duì)方的資源。 導(dǎo)語(yǔ)你家的小孩帶了他的朋友來(lái)你們的家里玩,你家的小孩如果要在自家屋里拿玩具玩、拿東西吃你自然是不會(huì)阻止,但是如果你家小孩的朋友人品不行,亂拿東西吃、...
摘要:扯了這么多,自然不是為了吹水,而是要為了引出前端開(kāi)發(fā)的一個(gè)重要的知識(shí)點(diǎn)同源策略什么是同源策略出于保護(hù)用戶信息安全的目的,現(xiàn)在的瀏覽器都會(huì)實(shí)施同源策略這個(gè)政策,所謂同源策略指的是不同源的客戶端腳本在沒(méi)有明確授權(quán)情況下,不允許讀寫(xiě)對(duì)方的資源。 導(dǎo)語(yǔ)你家的小孩帶了他的朋友來(lái)你們的家里玩,你家的小孩如果要在自家屋里拿玩具玩、拿東西吃你自然是不會(huì)阻止,但是如果你家小孩的朋友人品不行,亂拿東西吃、...
摘要:可以說(shuō)同源策略在安全中扮演著及其重要的角色。我把這個(gè)領(lǐng)域的東西寫(xiě)成了一個(gè)系列,以后還會(huì)繼續(xù)完善下去安全一同源策略與跨域安全二攻擊安全三攻擊 之所以要將同源策略與跨域?qū)懺谝黄穑且驗(yàn)榇嬖跒g覽器的同源策略,才會(huì)存在跨域問(wèn)題 何為同源策略 同源策略是瀏覽器實(shí)現(xiàn)的一種安全策略,它限制了不同源之間的文檔和腳本交互的權(quán)限。只有同一個(gè)源的腳本才會(huì)具有操作dom、讀寫(xiě)cookie、session 、a...
摘要:方案瀏覽器設(shè)置一級(jí)域名。場(chǎng)景完全不同源的網(wǎng)站,需要窗口通信方案父子窗口互相寫(xiě)互相監(jiān)聽(tīng)子窗口寫(xiě)后跳回同域父窗口讀瀏覽器跨文檔通信場(chǎng)景請(qǐng)求非同源地址方案架設(shè)服務(wù)器代理參考資料瀏覽器同源政策及其規(guī)避方法阮一峰前端常見(jiàn)跨域解決方案全跨域幾種方式 同源 概念:協(xié)議,域名,端口 相同。目的:保證用戶信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。限制的行為: Cookie、LocalStorage 和 In...
摘要:方案瀏覽器設(shè)置一級(jí)域名。場(chǎng)景完全不同源的網(wǎng)站,需要窗口通信方案父子窗口互相寫(xiě)互相監(jiān)聽(tīng)子窗口寫(xiě)后跳回同域父窗口讀瀏覽器跨文檔通信場(chǎng)景請(qǐng)求非同源地址方案架設(shè)服務(wù)器代理參考資料瀏覽器同源政策及其規(guī)避方法阮一峰前端常見(jiàn)跨域解決方案全跨域幾種方式 同源 概念:協(xié)議,域名,端口 相同。目的:保證用戶信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。限制的行為: Cookie、LocalStorage 和 In...
閱讀 1329·2021-09-04 16:40
閱讀 3455·2021-07-28 00:13
閱讀 2878·2019-08-30 11:19
閱讀 2611·2019-08-29 12:29
閱讀 3167·2019-08-29 12:24
閱讀 1122·2019-08-26 13:28
閱讀 2386·2019-08-26 12:01
閱讀 3445·2019-08-26 11:35