摘要:一概念跨源資源共享訪問(wèn)控制,后面會(huì)看到以前綴的頭部字段。機(jī)制讓服務(wù)端控制是否準(zhǔn)許跨域請(qǐng)求當(dāng)然了也要承擔(dān)確保安全的職責(zé)。服務(wù)端怎么瀏覽器這樣吧,如果是跨域請(qǐng)求,我先咨詢下你,如果你覺(jué)得請(qǐng)求安全,我再把真實(shí)請(qǐng)求發(fā)給你。
一、概念:
跨源資源共享:(Cross-Origin Resource Sharing)
訪問(wèn)控制:Access Control,后面會(huì)看到以Access-Control前綴的頭部字段。
JS中的xhr請(qǐng)求(XMLHttpRequest)受同源策略限制。但是這也導(dǎo)致有些合理的請(qǐng)求也被限制了。W3C提出了新的標(biāo)準(zhǔn)CORS來(lái)解決這個(gè)問(wèn)題。CORS機(jī)制讓服務(wù)端控制是否準(zhǔn)許跨域請(qǐng)求(當(dāng)然了也要承擔(dān)確保安全的職責(zé))。教程參考MDN(即MDN的參考),下面做些總結(jié)性的筆記。
三、CORS原理 3.1 瀏覽器和服務(wù)端的談判服務(wù)端:hi,我說(shuō)你管的也太多了!我認(rèn)為request A是安全的,你怎么不發(fā)給我?
瀏覽器:我怎么知道request A是安全。為了安全起見(jiàn),我不能發(fā)給你。
服務(wù)端:瞎子都能看出來(lái)reques是安全的。你個(gè)SB。
瀏覽器:你才SB
服務(wù)端:你SB
......
瀏覽器:咱天天這樣吵也不是事啊。咱們各退一步。
服務(wù)端:怎么?
瀏覽器:這樣吧,如果是跨域請(qǐng)求,我先咨詢下你,如果你覺(jué)得請(qǐng)求安全,我再把真實(shí)請(qǐng)求發(fā)給你。(Origin, Access-Control-Allow-Origin)
服務(wù)器:恩,好吧。不過(guò)你每次都先咨詢我,對(duì)性能會(huì)造成影響啊,再說(shuō)了有些請(qǐng)求不存在安全問(wèn)題。
瀏覽器:也是啊。這樣吧,對(duì)于那些安全的請(qǐng)求,我直接發(fā)給你。簡(jiǎn)單請(qǐng)求的定義你看看
服務(wù)器:這個(gè)定義確實(shí)OK,但也太苛刻了,實(shí)際應(yīng)用中很少遇到啊,這樣對(duì)性能的提升沒(méi)有實(shí)際解決。
瀏覽器:但是確保安全是我底線。這個(gè)沒(méi)得讓步。
服務(wù)器:要不這樣,你把預(yù)檢的結(jié)果緩存一段時(shí)間,在緩存時(shí)間內(nèi)不用再發(fā)送預(yù)檢請(qǐng)求。
瀏覽器:好想法,就這樣干。不過(guò)你得告訴我緩存多久。
服務(wù)器:可以啊。(Access-Control-Max-Age)
要實(shí)現(xiàn)CORS機(jī)制離不開(kāi)服務(wù)端的配合。為了更好的實(shí)現(xiàn)支持CORS服務(wù)接口,需要注意幾點(diǎn)
request可能會(huì)請(qǐng)求服務(wù)兩次(預(yù)檢,真實(shí)請(qǐng)求),在處理預(yù)檢過(guò)程中不要做真實(shí)請(qǐng)求的邏輯處理。
參考:MDN:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
W3C:
https://www.w3.org/TR/cors/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/83733.html
摘要:本章目標(biāo)基于項(xiàng)目搭建可以站外請(qǐng)求訪問(wèn)的跨域資源服務(wù)器。允許所有的請(qǐng)求域名訪問(wèn)我們的跨域資源,可以固定單條或者多條內(nèi)容,如,只有百度可以訪問(wèn)我們的跨域資源。 CORS(Cross-Origin Resource Sharing)跨域資源共享,是一個(gè)W3C標(biāo)準(zhǔn),它允許瀏覽器向跨域服務(wù)器發(fā)送Ajax請(qǐng)求,打破了Ajax只能訪問(wèn)本站內(nèi)的資源限制,CORS在很多地方都有被使用,微信支付的JS支付...
摘要:而我的新輪子也并不是專門解決它的問(wèn)題的,而是順便解決而已。概述這個(gè)包,支持在所有的項(xiàng)目中使用。一旦出現(xiàn)成員,代表允許全部。列出允許跨域請(qǐng)求的方法列表,默認(rèn)是代表所有方法。信息地址嗯,新輪子,求一波。 showImg(https://segmentfault.com/img/bV5VxN?w=844&h=656); 是的,可能了解 Laravel 的都知道,在 Laravel 中簡(jiǎn)單的設(shè)...
摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...
摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...
摘要:合適和夠用是最完美的追求。比如從頁(yè)面去請(qǐng)求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請(qǐng)求,從而克服了只能同源使用的限制。定義在中的路由都是無(wú)狀態(tài)的,并且會(huì)應(yīng)用中間件組。 關(guān)于作者 程序開(kāi)發(fā)人員,不拘泥于語(yǔ)言與技術(shù),目前主要從事PHP和前端開(kāi)發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開(kāi)發(fā)。合適和夠用是最完美的追求。 個(gè)人網(wǎng)站:http://www.linganm...
閱讀 2966·2021-11-11 16:55
閱讀 528·2021-09-27 13:36
閱讀 1103·2021-09-22 15:35
閱讀 2924·2019-08-30 12:46
閱讀 3134·2019-08-26 17:02
閱讀 1836·2019-08-26 11:56
閱讀 1303·2019-08-26 11:47
閱讀 433·2019-08-23 17:01