公司專案從前後端不分離轉到前後端分離
首先遇到的問題就是前後端分離的時候跨域的問題
但是當跨域成功配置並且能訪問成功的時候發現
每次客戶端的請求都會傳送兩次
第一次是options的請求,然後才是正常的請求
查閱資料得到的結論是:
第乙個options的請求是由web伺服器處理跨域訪問引發的。
options是一種「預檢請求」,瀏覽器在處理跨域訪問的請求時如果判斷請求為複雜請求,則會先向伺服器傳送一條預檢請求,根據伺服器返回的內容瀏覽器判斷伺服器是否允許該請求訪問。如果web伺服器採用cors的方式支援跨域訪問,在處理複雜請求時這個預檢請求是不可避免的。
一句話概括:因為我們公司的token通過header傳遞所以導致了瀏覽器判斷該請求是複雜請求,所以要先通過options請求進行預檢查
解決方法
設定access-control-max-age(指定本次預檢請求的有效期,單位秒)
nginx配置增加
#設定一天的過期時間
add_header access-control-max-age 86400;
問題解決!
原文:
Nginx配置跨域訪問
由於瀏覽器同源策略的存在使得乙個源中載入來自其它源中資源的行為受到了限制。即會出現跨域請求禁止。通俗一點說就是如果存在協議 網域名稱 埠或者子網域名稱不同服務端,或一者為ip位址,一者為網域名稱位址 在跨域問題上,域僅僅是通過 url的首部 來識別而不會去嘗試判斷相同的ip位址對應著兩個域或者兩個域...
配置nginx支援跨域訪問
解決方案 因為nginx預設是禁止跨域訪問的,所有當跨域請求資料的時候拿不到相應的資料,特別是字型。生產環境介紹 訪問www.a.com的時候,需要呼叫www.b.com下的css js image 字型等,因為設計到跨域,所以nginx拒絕了我的字型的請求,所以在www.b.com下面的serve...
跨域訪問(nginx)
注意 jsonp解決跨域只支援get 請求。ajax 需要自己寫個 函式 function onback 後台介面注意 context.response.write jsonp json.tostring trimend control type 2018 03 21 18 50 09string ...