實際上就是服務器要預檢一次接口,默認5,6秒一次,可自行更改
'Access-Control-Allow-Headers', 'appId' 來允許服務器請求中攜帶字段appId,如果還有其它字段,可以用逗號分隔填入;
'Access-Control-Allow-Methods',': POST, GET, OPTIONS'來允許服務器允許客戶端使用 POST, GET 和 OPTIONS 方法發起請求;
添加完畢之后,響應頭中增加對應字段,可以成功實現帶自定義首部字段的跨域通信。
|
1
2
3
4
5
6
|
//響應頭局部:
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Access-Control-Allow-Headers: appId
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Origin: *
|
但是我們發現每次這種情況都會觸發OPTIONS請求,然后再去執行業務邏輯,雖然正常執行了,但是一個請求變成了兩個,肯定增加了用戶等待時間和服務器資源消耗,於是又在響應頭中增加了Access-Control-Max-Age: 86400;表明該響應的有效時間為 86400 秒,也就是 24 小時。在有效時間內,瀏覽器無須為同一請求再次發起預檢請求。瀏覽器自身維護了一個最大有效時間,如果該首部字段的值超過了最大有效時間,將不會生效。最后同一天內一個接口就只有一次OPTIONS請求啦,大功告成!
