国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

同源策略與跨域資源共享的糾纏

趙連江 / 2788人閱讀

摘要:扯了這么多,自然不是為了吹水,而是要為了引出前端開(kāi)發(fā)的一個(gè)重要的知識(shí)點(diǎn)同源策略什么是同源策略出于保護(hù)用戶(hù)信息安全的目的,現(xiàn)在的瀏覽器都會(huì)實(shí)施同源策略這個(gè)政策,所謂同源策略指的是不同源的客戶(hù)端腳本在沒(méi)有明確授權(quán)情況下,不允許讀寫(xiě)對(duì)方的資源。

導(dǎo)語(yǔ)
你家的小孩帶了他的朋友來(lái)你們的家里玩,你家的小孩如果要在自家屋里拿玩具玩、拿東西吃你自然是不會(huì)阻止,但是如果你家小孩的朋友人品不行,亂拿東西吃、亂翻你家的東西,你自然不允許,拿什么東西要通過(guò)你的允許才行。

扯了這么多,自然不是為了吹水,而是要為了引出前端開(kāi)發(fā)的一個(gè)重要的知識(shí)點(diǎn)——同源策略

什么是同源策略

出于保護(hù)用戶(hù)信息安全的目的,現(xiàn)在的瀏覽器都會(huì)實(shí)施“同源策略”這個(gè)政策,所謂“同源策略”指的是不同源的客戶(hù)端腳本在沒(méi)有明確授權(quán)情況下,不允許讀寫(xiě)對(duì)方的資源。

試想,如果你在淘寶購(gòu)物完后,帶著淘寶的登陸信息又去京東,保不準(zhǔn)京東把你給黑掉,okay這只是開(kāi)個(gè)玩笑~~~

但是,在很多情況下我們又經(jīng)常需要跨域訪(fǎng)問(wèn)資源,比如你要在個(gè)人博客上創(chuàng)建一個(gè)音樂(lè)播放器,但這個(gè)接口如果自己創(chuàng)建的話(huà)性?xún)r(jià)比太低了,這就需要其他源提供一個(gè)可訪(fǎng)問(wèn)的接口給你使用,這里就涉及到突破同源策略的限制的跨域訪(fǎng)問(wèn)

所謂同源:

同協(xié)議:如都是http

同域名:如都是terenyeung.applinzi.com/newapp/carousel.html和terenyeung.applinzi.com/index.html

同端口:如都是80端口

什么是跨域

而所謂的跨域,指的是突破同源策略的限制,本源的客戶(hù)端腳本訪(fǎng)問(wèn)其他源的數(shù)據(jù)

跨域的實(shí)現(xiàn)方式

目前,實(shí)現(xiàn)跨域訪(fǎng)問(wèn)的方法包括:

- JSONP
- Cross-Origin Resource Sharing
- HTML5 postMessage
- 其他Hack
  - 利用hash
  -  利用window.name

這里主要講解常用的JSONP和CORS兩種跨域方法。

JSONP

JSONP的全稱(chēng)是JSON with Padding,

原理
- JSONP是通過(guò)script標(biāo)簽加載數(shù)據(jù)的方式去獲取其他源的數(shù)據(jù),然后當(dāng)做js代碼來(lái)執(zhí)行;

- 你需要提前在文檔中聲明一個(gè)回調(diào)函數(shù),該函數(shù)的函數(shù)名通過(guò)GET的方式向后臺(tái)傳參,后臺(tái)解析到函數(shù)名后在原始數(shù)據(jù)上padding這個(gè)函數(shù)名,然后在發(fā)給前端,最終這個(gè)返回前端的字符串將作為js的一部分執(zhí)行
范例解析:
//你現(xiàn)在所在的頁(yè)面是
http://terenyeung.applinzi.com/newapp/task31/jsonp.html
//你現(xiàn)在的需求是想要獲取另一個(gè)源http://teren.applinzi.com/jsonp.php的數(shù)據(jù)

//利用jsonp實(shí)現(xiàn)跨域訪(fǎng)問(wèn)的具體做法是:
//1.在該頁(yè)面添加一個(gè)script標(biāo)簽,當(dāng)加載script的時(shí)候就會(huì)向另一個(gè)源(http://teren.applinzi.com/task31/jsonp.php)發(fā)送GET的請(qǐng)求;
//2.存放在另一個(gè)源的后臺(tái)腳本對(duì)前端發(fā)過(guò)來(lái)的查詢(xún)字符串(帶函數(shù)名)進(jìn)行判斷,如果存在則為后臺(tái)返回的數(shù)據(jù)包裹上帶有該函數(shù)名的字符串,即
if($callback){    
  echo $callback."(".json_encode($data).")";
}else{    
  echo $data;
}


代碼

跨域?qū)崿F(xiàn)方式——JSONP

CORS

CORS的全稱(chēng)是Cross-Origin Resources Sharing,它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了AJAX只能同源使用的限制

原理

CORS需要瀏覽器和服務(wù)器同時(shí)支持。目前,所有瀏覽器都支持該功能,IE瀏覽器不能低于IE10;

瀏覽器一旦發(fā)現(xiàn)AJAX請(qǐng)求跨源,就會(huì)自動(dòng)添加一些附加的頭信息——origin字段,告訴跨域的后臺(tái)這次跨域請(qǐng)求是由哪個(gè)源(這里是http://terenyeung.applinzi.com)
發(fā)出的

實(shí)現(xiàn)CORS通信的關(guān)鍵是服務(wù)器。只要服務(wù)器實(shí)現(xiàn)了CORS接口,就可以跨源通信。服務(wù)器根據(jù)前端發(fā)過(guò)來(lái)的跨域的ajax請(qǐng)求的origin字段,決定是否同意這次的跨域訪(fǎng)問(wèn);
如果后臺(tái)同意的話(huà),可以在后臺(tái)文檔(以php后臺(tái)為例)中設(shè)置如下:

添加一個(gè)頭:

[注]*為允許所有的源訪(fǎng)問(wèn)

如果被允許另一個(gè)源跨域訪(fǎng)問(wèn),則返回的頭信息一定包含如下字段:
Access-Control-Allow-Origin: http://terenyeung.applinzi.com
或者
Access-Control-Allow-Origin: *
范例解析
代碼

跨域?qū)崿F(xiàn)方式——CORS

參考資料

阮一峰——瀏覽器同源政策及其規(guī)避方法
阮一峰——跨域資源共享 CORS 詳解
知乎——「每日一題」JSONP 是什么?
饑人谷——同源策略及跨域資源共享

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/22187.html

相關(guān)文章

  • 同源策略跨域資源共享糾纏

    摘要:扯了這么多,自然不是為了吹水,而是要為了引出前端開(kāi)發(fā)的一個(gè)重要的知識(shí)點(diǎn)同源策略什么是同源策略出于保護(hù)用戶(hù)信息安全的目的,現(xiàn)在的瀏覽器都會(huì)實(shí)施同源策略這個(gè)政策,所謂同源策略指的是不同源的客戶(hù)端腳本在沒(méi)有明確授權(quán)情況下,不允許讀寫(xiě)對(duì)方的資源。 導(dǎo)語(yǔ)你家的小孩帶了他的朋友來(lái)你們的家里玩,你家的小孩如果要在自家屋里拿玩具玩、拿東西吃你自然是不會(huì)阻止,但是如果你家小孩的朋友人品不行,亂拿東西吃、...

    alighters 評(píng)論0 收藏0
  • 同源策略跨域資源共享

    摘要:由于瀏覽器的同源策略導(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 Sha...

    darcrand 評(píng)論0 收藏0
  • web安全一,同源策略跨域

    摘要:可以說(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...

    cgspine 評(píng)論0 收藏0
  • FE.B-理解瀏覽器同源策略跨域方案

    摘要:方案瀏覽器設(shè)置一級(jí)域名。場(chǎng)景完全不同源的網(wǎng)站,需要窗口通信方案父子窗口互相寫(xiě)互相監(jiān)聽(tīng)子窗口寫(xiě)后跳回同域父窗口讀瀏覽器跨文檔通信場(chǎng)景請(qǐng)求非同源地址方案架設(shè)服務(wù)器代理參考資料瀏覽器同源政策及其規(guī)避方法阮一峰前端常見(jiàn)跨域解決方案全跨域幾種方式 同源 概念:協(xié)議,域名,端口 相同。目的:保證用戶(hù)信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。限制的行為: Cookie、LocalStorage 和 In...

    oujie 評(píng)論0 收藏0
  • FE.B-理解瀏覽器同源策略跨域方案

    摘要:方案瀏覽器設(shè)置一級(jí)域名。場(chǎng)景完全不同源的網(wǎng)站,需要窗口通信方案父子窗口互相寫(xiě)互相監(jiān)聽(tīng)子窗口寫(xiě)后跳回同域父窗口讀瀏覽器跨文檔通信場(chǎng)景請(qǐng)求非同源地址方案架設(shè)服務(wù)器代理參考資料瀏覽器同源政策及其規(guī)避方法阮一峰前端常見(jiàn)跨域解決方案全跨域幾種方式 同源 概念:協(xié)議,域名,端口 相同。目的:保證用戶(hù)信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。限制的行為: Cookie、LocalStorage 和 In...

    ghnor 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

趙連江

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<