我也說說Nginx解決前端跨域問題,正確的Nginx跨域配置(后端Nginx CORS跨域配置老客、CORS設(shè)置僚饭,后端允許跨域請求)

最近連續(xù)兩個朋友問我跨域相關(guān)問題,我猜想可能不少朋友也遇到類似問題沿量,我打算寫個博客聊一下我實際使用的配置浪慌,

先說明一下,我并不太了解這配置朴则,沒精力去了解太多,但我覺得其中有一些關(guān)鍵的小注意點钓简,可能有些初學者不太注意到乌妒,導致配置有問題,本文章可能只對新手有點幫助外邓,如果你有好配置撤蚊,歡迎評論回復,讓大家學習损话!

Nginx的CORS配置侦啸,網(wǎng)上太多這配置了槽唾,但大家更多的復制粘貼、轉(zhuǎn)發(fā)光涂,幾乎都是類似下面這三兩行:


add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Headers X-Requested-With;

add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

這樣有用么庞萍?有用,我以前這樣使用也正常過忘闻,但后來還是遇到問題了钝计,發(fā)現(xiàn)有些項目請求就不成功,也遇到有些瀏覽器成功齐佳,有些瀏覽器不成功私恬;

我也在網(wǎng)上查找各種資料和調(diào)整寫法,最后我調(diào)整好的寫法炼吴,基本的使用沒問題本鸣,我在項目中也一直使用著!

下面發(fā)一段我實際項目中的部分配置:


location /aoda-web {

    add_header'Access-Control-Allow-Origin'$http_origin;

    add_header'Access-Control-Allow-Credentials''true';

    add_header'Access-Control-Allow-Methods''GET, POST, OPTIONS';

    add_header'Access-Control-Allow-Headers''DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X- Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';

   add_header'Access-Control-Expose-Headers''Content-Length,Content-Range';

    if($request_method='OPTIONS') {

        add_header'Access-Control-Max-Age'1728000;

        add_header'Content-Type''text/plain; charset=utf-8';

        add_header'Content-Length'0;

        return204;

    }

     roothtml;

      indexindex.html index.htm;

        proxy_passhttp://127.0.0.1:8080;

        proxy_set_headerHost$host;

        proxy_set_headerX-Real-IP$remote_addr;

        proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

        proxy_set_headerX-Forwarded-Proto$scheme;

        proxy_connect_timeout5;

}

下面簡單講解一下硅蹦,以便大家配置成功永高!

1、Access-Control-Allow-Origin提针,這里使用變量 $http_origin取得當前來源域命爬,大家說用“*”代表允許所有,我實際使用并不成功辐脖,原因未知饲宛;

2、Access-Control-Allow-Credentials嗜价,為 true 的時候指請求時可帶上Cookie艇抠,自己按情況配置吧;

3久锥、Access-Control-Allow-Methods家淤,OPTIONS一定要有的,另外一般也就GET和POST瑟由,如果你有其它的也可加進去絮重;

4、Access-Control-Allow-Headers歹苦,這個要注意青伤,里面一定要包含自定義的http頭字段(就是說前端請求接口時,如果在http頭里加了自定義的字段殴瘦,這里配置一定要寫上相應的字段)狠角,從上面可看到我寫的比較長,我在網(wǎng)上搜索一些常用的寫進去了蚪腋,里面有“web-token”和“app-token”丰歌,這個是我項目里前端請求時設(shè)置的姨蟋,所以我在這里要寫上;

5立帖、Access-Control-Expose-Headers眼溶,可不設(shè)置,看網(wǎng)上大致意思是默認只能獲返回頭的6個基本字段厘惦,要獲取其它額外的偷仿,先在這設(shè)置才能獲取它;

6宵蕉、語句“ if ($request_method = 'OPTIONS') { ”酝静,因為瀏覽器判斷是否允許跨域時會先往后端發(fā)一個 options 請求,然后根據(jù)返回的結(jié)果判斷是否允許跨域請求羡玛,所以這里單獨判斷這個請求别智,然后直接返回;

好了稼稿,按我上面配置基本都可使用(有些朋友確定只百度復制了兩行薄榛,然后說配置好了,跟前端朋友互扯)让歼,

下面發(fā)一個實際配置供參考敞恋,我做了少量更改,如下:


server{

        listen80;

        server_namexxx.com;

        location/xxx-web/papi {

        add_header'Access-Control-Allow-Origin'$http_origin;

        add_header'Access-Control-Allow-Credentials''true';

        add_header'Access-Control-Allow-Methods''GET, POST, OPTIONS';

        add_header'Access-Control-Allow-Headers''DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';

        add_header'Access-Control-Expose-Headers''Content-Length,Content-Range';

        if($request_method='OPTIONS') {

            add_header'Access-Control-Max-Age'1728000;

            add_header'Content-Type''text/plain; charset=utf-8';

            add_header'Content-Length'0;

            return204;

        }

       roothtml;

        indexindex.html index.htm;

        proxy_passhttp://127.0.0.1:7071;

        proxy_set_headerHost$host;

        proxy_set_headerX-Real-IP$remote_addr;

        proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

        proxy_set_headerX-Forwarded-Proto$scheme;

        proxy_connect_timeout5;

    }

    location/xxx-web {

        add_header'Access-Control-Allow-Origin'$http_origin;

        add_header'Access-Control-Allow-Credentials''true';

        add_header'Access-Control-Allow-Methods''GET, POST, OPTIONS';

        add_header'Access-Control-Allow-Headers''DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';

        add_header'Access-Control-Expose-Headers''Content-Length,Content-Range';

        if($request_method='OPTIONS') {

                add_header'Access-Control-Max-Age'1728000;

                add_header'Content-Type''text/plain; charset=utf-8';

                add_header'Content-Length'0;

                return204;

    }

      roothtml;

      indexindex.html index.htm;

      proxy_passhttp://127.0.0.1:8080;

       proxy_set_headerHost$host;

        proxy_set_headerX-Real-IP$remote_addr;

        proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

        proxy_set_headerX-Forwarded-Proto$scheme;

        proxy_connect_timeout5;

    }

    location/ {

        root/var/www/xxx/wechat/webroot;

        indexindex.html index.htm;

    }

    error_page500502503504/50x.html;

    location= /50x.html {

    roothtml;

    }

}

來源于:https://blog.csdn.net/envon123/article/details/83270277

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谋右,一起剝皮案震驚了整個濱河市硬猫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌改执,老刑警劉巖啸蜜,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辈挂,居然都是意外死亡衬横,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門终蒂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜂林,“玉大人,你說我怎么就攤上這事后豫∠の玻” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵挫酿,是天一觀的道長。 經(jīng)常有香客問我愕难,道長早龟,這世上最難降的妖魔是什么惫霸? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮葱弟,結(jié)果婚禮上壹店,老公的妹妹穿的比我還像新娘。我一直安慰自己芝加,他們只是感情好硅卢,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藏杖,像睡著了一般将塑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蝌麸,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天点寥,我揣著相機與錄音,去河邊找鬼来吩。 笑死敢辩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的弟疆。 我是一名探鬼主播戚长,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怠苔!你這毒婦竟也來了同廉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤嘀略,失蹤者是張志新(化名)和其女友劉穎恤溶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帜羊,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡咒程,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了讼育。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帐姻。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖奶段,靈堂內(nèi)的尸體忽然破棺而出饥瓷,到底是詐尸還是另有隱情,我是刑警寧澤痹籍,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布呢铆,位于F島的核電站,受9級特大地震影響蹲缠,放射性物質(zhì)發(fā)生泄漏棺克。R本人自食惡果不足惜悠垛,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望娜谊。 院中可真熱鬧确买,春花似錦、人聲如沸纱皆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽派草。三九已至搀缠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間澳眷,已是汗流浹背胡嘿。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钳踊,地道東北人衷敌。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像拓瞪,于是被迫代替她去往敵國和親缴罗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348