《浪漫沙加:Re宇宙》確定製作衍生漫畫 知名手遊改
cors跨域_CORS跨域請求,設定5個引數,含義和注意要點都在這了
weixin_395827242020-11-28 23:52:15779收藏 文章標籤:cors跨域java刪除跨域cookie程式碼託管:Github和Gitee,國內使用者使用Gitee下載速度較快。
系統環境:Win10/Ubuntu,JDK8,maven,node,docker。
依賴服務:MySQL8,Redis5
一,問題
Jeecg技術社群使用者提報了一個跨域請求issue:
當前程式碼中設定了三個cors請求:
因為新接入的第三方API傳遞Cookie,則必須設定Access-Control-Allow-Credentials為true。
二,知識延伸
CORS是一個W3C標準,Cross-origin resource sharing,跨域資源共享,允許瀏覽器向跨源伺服器發出XMLHttpRequest請求,解決了AJAX只允許同源使用的限制。
整個CORS通訊過程由瀏覽器自動完成,與僅支援同源的AJAX程式碼完全一樣。
瀏覽器一旦發現AJAX跨源請求,就會自動新增一些附加的頭資訊,有時還會多出一次附加的OPTIONS預檢請求,但對使用者是透明的。
為了支援CORS跨域訪問,常在過濾器或者攔截器中新增的配置如下:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Origin", "http://192.168.10.118:8080");
response.setHeader("Access-Control-Allow-Methods", "POST,OPTIONS,GET");
response.setHeader("Access-Control-Allow-Headers", "accept,x-requested-with,Content-Type,X-Custom-Header");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Max-Age", "3600");
1,Access-Control-Allow-Origin
必填欄位,取值可以是請求時Origin欄位的值,也可以是*,表示接受任意域名的請求。
2,Access-Control-Allow-Methods
必填欄位,取值是逗號分隔的一個字串,設定伺服器支援的跨域請求的方法。
注意為了避免多次OPTIONS請求,返回的是所有支援的方法,逗號分隔。
3,Access-Control-Allow-Headers
可選欄位,CORS請求時預設支援6個基本欄位,XMLHttpRequest.getResponseHeader()方法:
Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。
如果需要支援其他Headers欄位,必須在Access-Control-Allow-Headers裡面指定。
4,Access-Control-Allow-Credentials
可選欄位,布林值型別,表示是否允許傳送Cookie。預設情況下,Cookie不包括在CORS請求之中;如果設為true,即表示伺服器允許在請求中包含Cookie,一起發給伺服器。
注意該值只能設為true,如果伺服器不允許瀏覽器傳送Cookie,刪除該欄位即可。
5,Access-Control-Max-Age
可選欄位,用來指定預檢請求的有效期,單位為秒,在此期間不用發出另一條預檢請求,不指定時即使用預設值,Chrome預設5秒。
常用瀏覽器有不同的最大值限制,Firefox上限是24小時 (即86400秒),Chrom是10分鐘(即600秒)。
注意Access-Control-Max-Age設定針對完全一樣的url,當url包含路徑引數時,其中一個url的Access-Control-Max-Age設定對另一個url沒有效果。
#web開發#
來源:https://blog.csdn.net/weixin_39582724/article/details/110607177