成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

AJAX 跨域解決方案 - CORS

YPHP / 3398人閱讀

摘要:同源策略是對(duì)的一個(gè)主要約束,它為通信設(shè)置了相同的域相同的端口相同的協(xié)議這一限制。試圖訪問(wèn)上述限制之外的資源都會(huì)引發(fā)安全錯(cuò)誤,除非采用被認(rèn)可的跨域解決方案。這個(gè)方案叫做跨源資源共享。方案二弊端不支持請(qǐng)求。方案三與方案一類似。

什么是AJAX?

AJAX 是無(wú)需刷新頁(yè)面就能夠從服務(wù)器去的數(shù)據(jù)的一種方法,負(fù)責(zé)Ajax運(yùn)作的核心對(duì)象是XMLHttpRequest(XHR)對(duì)象。

同源策略是對(duì)XHR的一個(gè)主要約束,它為通信設(shè)置了“相同的域、相同的端口、相同的協(xié)議”這一限制。
試圖訪問(wèn)上述限制之外的資源都會(huì)引發(fā)安全錯(cuò)誤,除非采用被認(rèn)可的跨域解決方案。

這個(gè)方案叫做CORS(Cross-Origin Resource Sharing)跨源資源共享。

哪些訪問(wèn)屬于跨域?

http://a.com 不允許訪問(wèn) http://b.com(不同域)

http://a.com 不允許訪問(wèn) https://a.com(同一域名,不同協(xié)議)

http://a.com 不允許訪問(wèn) http://a.com:8080(同一域名,不同端口)

http://a.com 不允許訪問(wèn) http://192.168.1.1(域名和域名對(duì)應(yīng)的ip)

http://a.a.com 不允許訪問(wèn) http://b.a.com(主域相同,子域不同)

三種解決方案:

方案一:

//弊端:存在瀏覽器兼容的問(wèn)題

需要被請(qǐng)求方的服務(wù)端設(shè)置: Access-Control-Allow-Origin

切記:Access-Control-Allow-Origin 不可設(shè)置為 * ,設(shè)置為可訪問(wèn)的域名。

//設(shè)置可供訪問(wèn)的白名單
$white_list = ["http://cdn.abc.com","http://abc.com"];

$_SERVER["HTTP_ORIGIN"] //表示請(qǐng)求方的域名

$http_origin = "";
if (!empty($_SERVER["HTTP_ORIGIN"]) && in_array($_SERVER["HTTP_ORIGIN"],$white_list)) {
    $http_origin = $_SERVER["HTTP_ORIGIN"];

    //設(shè)置 header 信息
    header("Access-Control-Allow-Origin: {$http_origin}");
    header("Access-Control-Allow-Methods", "POST,GET");
    header("Access-Control-Allow-Credentials:true");  //允許訪問(wèn)Cookie
    header("Access-Control-Allow-Headers : X-Requested-With"); //設(shè)置Headers
}
//執(zhí)行代碼邏輯...

另:如果請(qǐng)求的是html,在文件里加上meta標(biāo)簽。


方案二:

//弊端:不支持 POST 請(qǐng)求。

使用 JSONP 進(jìn)行解決跨域問(wèn)題,網(wǎng)上文章蠻多的。

方案三:

與方案一類似。

修改Nginx Apache 配置:

//Nginx

http {
  ......
  add_header Access-Control-Allow-Origin *;
  add_header Access-Control-Allow-Headers X-Requested-With;
  add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
  ......
}

Apache :


    ......
    Header set Access-Control-Allow-Origin *

大家可以根據(jù)自己的情況進(jìn)行選擇方案。


來(lái)源:http://mp.weixin.qq.com/s?__b...

Thanks ~

AD:

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30454.html

相關(guān)文章

  • 20K前端大佬面試(關(guān)于如何回答ajax跨域問(wèn)題)

    摘要:在接觸前端開發(fā)起,跨域這個(gè)詞就一直以很高的頻率在我們學(xué)習(xí)工作中重復(fù)出現(xiàn),最近在工作中遇到了跨域的相關(guān)問(wèn)題,這里我把它總結(jié)記錄一下。 在接觸前端開發(fā)起,跨域這個(gè)詞就一直以很高的頻率在我們學(xué)習(xí)工作中重復(fù)出現(xiàn),最近在工作中遇到了跨域的相關(guān)問(wèn)題,這里我把它總結(jié)記錄一下。關(guān)于跨域,有N種類型,現(xiàn)在我只專注于ajax請(qǐng)求跨域(ajax跨域只是屬于瀏覽器同源策略中的一部分,其它的這里不做介紹),內(nèi)容...

    Yangyang 評(píng)論0 收藏0
  • ajax跨域,這應(yīng)該是最全的解決方案

    摘要:關(guān)于,強(qiáng)烈推薦閱讀跨域資源共享詳解阮一峰另外,這里也整理了一個(gè)實(shí)現(xiàn)原理圖簡(jiǎn)化版如何判斷是否是簡(jiǎn)單請(qǐng)求瀏覽器將請(qǐng)求分成兩類簡(jiǎn)單請(qǐng)求和非簡(jiǎn)單請(qǐng)求。 前言 從剛接觸前端開發(fā)起,跨域這個(gè)詞就一直以很高的頻率在身邊重復(fù)出現(xiàn),一直到現(xiàn)在,已經(jīng)調(diào)試過(guò)N個(gè)跨域相關(guān)的問(wèn)題了,16年時(shí)也整理過(guò)一篇相關(guān)文章,但是感覺還是差了點(diǎn)什么,于是現(xiàn)在重新梳理了一下。 個(gè)人見識(shí)有限,如有差錯(cuò),請(qǐng)多多見諒,歡迎提出iss...

    ytwman 評(píng)論0 收藏0
  • 再也不學(xué)AJAX了?。ㄈ?em>跨域獲取資源 ② - JSONP & CORS

    摘要:瀏覽器的同源策略固然保障了互聯(lián)網(wǎng)世界的數(shù)據(jù)隱私與數(shù)據(jù)安全,但是如果當(dāng)我們需要使用跨域請(qǐng)求資源時(shí),同源策略又會(huì)成為開發(fā)者的阻礙。我們之前提到過(guò),如果想要繞過(guò)瀏覽器同源策略,實(shí)現(xiàn)使用技術(shù)跨域獲取資源,需要服務(wù)端和客戶端的協(xié)同合作。 瀏覽器的同源策略固然保障了互聯(lián)網(wǎng)世界的數(shù)據(jù)隱私與數(shù)據(jù)安全,但是如果當(dāng)我們需要使用AJAX跨域請(qǐng)求資源時(shí),同源策略又會(huì)成為開發(fā)者的阻礙。在本文中,我們會(huì)簡(jiǎn)單介紹需...

    enda 評(píng)論0 收藏0
  • 同源策略與CORS跨域

    摘要:所以瀏覽器認(rèn)為這是安全的。如果你細(xì)心的話你會(huì)發(fā)現(xiàn),其實(shí)請(qǐng)求已經(jīng)發(fā)送出去了,你只是拿不到響應(yīng)而已。所以瀏覽器這個(gè)策略的本質(zhì)是,一個(gè)域名的,在未經(jīng)允許的情況下,不得讀取另一個(gè)域名的內(nèi)容。但瀏覽器并不阻止你向另一個(gè)域名發(fā)送請(qǐng)求。 同源策略與CORS跨域 PS:這篇文章是緊接著JSONP原理和Ajax學(xué)習(xí)與理解寫的,有些內(nèi)容是承接了上兩篇文章.這篇文章只算是我的個(gè)人學(xué)習(xí)筆記,內(nèi)容沒(méi)有經(jīng)過(guò)精心排...

    ninefive 評(píng)論0 收藏0
  • 【日常填坑】之ajax請(qǐng)求laravel的api接口

    摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...

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

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

0條評(píng)論

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