酷知百科網

位置:首頁 > 遊戲數碼 > 互聯網

ajax如何設定header 跨域

互聯網6.81K

解決跨域調用服務並設定headers 主要的解決方法需要透過服務器端設定響應頭、正確響應options請求,正確設定 JavaScript端需要設定的headers資訊 方能實現

操作方法

(01)服務端設定響應頭header('Access-Control-Allow-Origin:*');  //支援全域名訪問,不安全,部署後需要固定限制爲客戶端網址header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); //支援的http 動作header('Access-Control-Allow-Headers:x-requested-with,content-type');  //響應頭 請按照自己需求添加。

方法/步驟2

(01)瞭解IE chrome 等瀏覽器 對於 跨域請求並要求設定Headers自訂參數的時候的 "預請求"   就是如果遇到 跨域並設定headers的請求,所有請求需要兩步完成!

(02)第一步:發送預請求 OPTIONS 請求。此時 服務器端需要對於OPTIONS請求作出響應 一般使用202響應即可 不用返回任何內容資訊

(03)第二步:服務器accepted 第一步請求後 瀏覽器自動執行第二步 發送真正的請求。此時 大多數人 會發現請求成功了,但是 有那麼幾個人會發現 請求成功了但是沒有任何資訊返回 why?因爲你自訂的請求頭在服務器響應中不存在!檢視console輸出 會發現一個問題:“Access-Control-Allow-Headers 列表中不存在請求標頭 XXXXXX”【IE】,request header field xxxxxx is not allowed by Access-Control-Allow-Header【chrome】這是因爲 你的XXXX請求頭 沒有在服務器端被允許,遇到這個問題 只有透過修改服務器端來完成,舉例:需要設定 requesttype這麼一個自訂頭,那麼 你需要在 服務端裏面 將header('Access-Control-Allow-Headers:x-requested-with,content-type,requesttype');

(04)部分代碼參考如下客戶端代碼

ajax如何設定header 跨域

(05)服務器端代碼

ajax如何設定header 跨域 第2張