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