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