国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

正確配置Access-Control-Allow-Origin,千萬(wàn)不要設(shè)置成*

這篇具有很好參考價(jià)值的文章主要介紹了正確配置Access-Control-Allow-Origin,千萬(wàn)不要設(shè)置成*。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

隨著前后臺(tái)架構(gòu)的興起,以及各種小程序、客戶端等異地前端的部署架構(gòu),相信大家都經(jīng)常會(huì)遇到CORS問(wèn)題,CORS問(wèn)題會(huì)阻止后臺(tái)數(shù)據(jù)的正常返回,如果你搜索相關(guān)錯(cuò)誤,你會(huì)遇到很多教程,教你修改Access-Control-Allow-Origin,解決CORS問(wèn)題。

那這里我要多說(shuō)一句,如果搜到的方案是讓你把Access-Control-Allow-Origin配置成*,請(qǐng)不要這么做,至少在生產(chǎn)環(huán)境不要這么做。

Access-Control-Allow-Origin配置成*什么意思?意思是允許任意網(wǎng)站跨域訪問(wèn)該服務(wù)端口,在這種情況下,任意一個(gè)前端程序都可以隨意集成該端口內(nèi)容,實(shí)現(xiàn)數(shù)據(jù)獲取。

那正確的方法是什么呢?應(yīng)該配置成為你允許的網(wǎng)站。例如百家飯的域名是rongapi.cn,訪問(wèn)方式是https,那就應(yīng)該是https://rongapi.cn/,最保險(xiǎn)的獲取該地址的方式是打開(kāi)你的前端調(diào)試窗口,查看任意網(wǎng)絡(luò)請(qǐng)求中標(biāo)頭里面origin的內(nèi)容,如下圖,請(qǐng)注意,有些地方會(huì)說(shuō)要用referer的值,但是從下圖我們可以看出,origin這個(gè)值和referer的值是不同的。

正確配置Access-Control-Allow-Origin,千萬(wàn)不要設(shè)置成*

?那我們拿到這個(gè)origin的值,配置到Access-Control-Allow-Origin里面是完全沒(méi)有問(wèn)題的。

配置Access-Control-Allow-Origin的方法

配置Access-Control-Allow-Origin的地點(diǎn)可以有很多,在通常的負(fù)載均衡-Web服務(wù)器架構(gòu)中,我們推薦可以在nginx配置中完成該配置。配置方法是在server段內(nèi)或者location段內(nèi),添加

add_header 'Access-Control-Allow-Origin' 'xxxxx';

注意,配置成多域名不可以

那如果我們的業(yè)務(wù)域名是多個(gè)域名應(yīng)該怎么辦呢,我們?cè)谒阉髟摻鉀Q方案的時(shí)候,有時(shí)候會(huì)遇到有方案講,把多個(gè)域名同時(shí)添加到header里面,但是這個(gè)方案經(jīng)測(cè)試已經(jīng)過(guò)期或者不是一個(gè)正確方案。

正確的nginx配置方式是先測(cè)試http_origin是否符合要求,如果符合,將用戶傳入的http_origin填入中。

例如

location / {
    if ($http_origin ~* "^https?://(rongapi.cn|www.rongapi.cn)$") {
        add_header Access-Control-Allow-Origin "$http_origin";
    }
}

這里用的是正則表達(dá)式,當(dāng)然直接使用=或者!=比較字符串也可以。

其他CORS常見(jiàn)的錯(cuò)誤

post出錯(cuò),get不出錯(cuò)

大量現(xiàn)代瀏覽器似乎會(huì)在post之前傳輸一個(gè)options來(lái)確認(rèn)服務(wù)器行為,該現(xiàn)象在ios和android之間不統(tǒng)一。

如果你的web服務(wù)器沒(méi)有能夠處理該行為的關(guān)聯(lián)關(guān)系,可能會(huì)出現(xiàn)get接口都是好的,但是post出錯(cuò)的情況,這時(shí),我們需要為options操作配置一個(gè)特殊的返回結(jié)構(gòu),例如我們用到的(從網(wǎng)上摘抄)

if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';
        #
        # Om nom nom cookies
        #
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        #
        # Custom headers and headers various browsers *should* be OK with but aren't
        #
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        #
        # Tell client that this pre-flight info is valid for 20 days
        #
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;
        return 204;
     }

Options因?yàn)橹皇穷A(yù)請(qǐng)求,所以我們就不用麻煩去配?Access-Control-Allow-Origin了,反正正式請(qǐng)求的時(shí)候再判斷也可以。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-414629.html

到了這里,關(guān)于正確配置Access-Control-Allow-Origin,千萬(wàn)不要設(shè)置成*的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包