本地使用vue建立專案時,由於需要開啟本地服務,因此會佔用埠,導致傳送ajax請求時需要跨域,以下是跨域請求的解決方案之一,出現同樣問題的朋友可以借鑑參考,謝謝!
- 問題一
問題描述:當我們傳送跨域請求時,如果不需要保留cookie資訊,出現訪問限制。
解決方案:
//在伺服器端設定請求頭,允許所有域名訪問
header('Access-Control-Allow-Origin:*');
- 問題二
問題描述:跨域成功後,設定session發現cookie為空。
解決方案:
//在main.js中新增如下程式碼:
import axios from 'axios'
axios.defaults.withCredentials = true; //設定發起請求的‘憑據模式’為‘include’,
//session值可以正常列印出來
- 問題三
問題描述:session值可以列印,但是跨域請求失敗,被CORS策略阻止訪問。
報錯資訊:
在“http://panhuo.cn/saas/jxc”中對XMLHttpRequest的訪問已被CORS策略阻止:當請求的憑據模式為“include”時,響應中的“Access- control - allow - origin”報頭的值必須不是萬用字元“*”。XMLHttpRequest發起的請求的憑據模式由withCredentials屬性控制。
解決方案:
//在vue.config.js檔案中設定代理
proxy: { //配置代理
//跨域設定
"/api": {
target: "http://learnku.cn:80/saas/jxc", //請求源地址
ws: true, //是否代理
changeOrigin: true, //是否跨域
}
}
注意: 當配置代理成功後,需要重啟服務,否則配置檔案不會生效。
至此問題已解決,跨域成功,且可以獲取到cookie值。
本作品採用《CC 協議》,轉載必須註明作者和本文連結