1. 程式人生 > 其它 >handsontable有顯示值與實際值的下拉框cobbobox擴充套件

handsontable有顯示值與實際值的下拉框cobbobox擴充套件

cors跨域_CORS跨域請求,設定5個引數,含義和注意要點都在這了

2020-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