您好,登錄后才能下訂單哦!
問題描述
前端 vue 框架,后臺 php,百度跨域問題后臺加這段代碼
header("Access-Control-Allow-Origin: *");
加了之后報這個錯:
The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.
The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.
解決辦法
文章鏈接:CORS: credentials mode is ‘include'
xhrFields: { withCredentials: false },
把 withCredentials: true
改成 withCredentials: false
,如果你沒加上面那段代碼當然也不會報這個錯。雖然是解決方法很簡單,但經此發現許多知識沒掌握不得不梳理下。
•HTTP 請求方式有許多種,有些請求會觸發 CORS 預檢請求。“需預檢的請求”會使用 OPTIONS 方法發起一個預檢請求到服務器,以獲知服務器是否允許該實際請求。
•對于跨域請求瀏覽器一般不會發送身份憑證信息。如果要發送憑證信息,需要設置 XMLHttpRequest 的 withCredentials 屬性為 true:withCredentials: true。此時要求服務器的響應信息中攜帶 Access-Control-Allow-Credentials: true,否則響應內容將不會返回。
•對于攜帶身份憑證的請求,服務器不得設置 Access-Control-Allow-Origin
的值為“*”。因為請求頭攜帶了 Cookie 信息。要將 Access-Control-Allow-Origin
的值設置為 http://www.zrt.local:8080。
•另外,響應頭中也攜帶了 Set-Cookie
字段,嘗試對 Cookie 進行修改。如果操作失敗,將會拋出異常。
跨域請求想要帶上 cookies 必須在請求頭里面加上:
crossDomain: true, xhrFields: { withCredentials: true }
又變成文章開頭的問題了,解決辦法:
后臺代碼:
Access-Control-Allow-Origin: 'http://www.zrt.local:8080' Access-Control-Allow-Credentials: true
前端代碼:
crossDomain: true, xhrFields: { withCredentials: true }
跟之前一樣就行了。
總結
以上所述是小編給大家介紹的Vue 項目中遇到的跨域問題及解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。