設置請求頭中攜帶cookie,但是不起作用的幾種情況總結,針對於客戶端解決。


第一種情況:同源請求時,開啟攜帶憑據傳輸后,會自動攜帶Cookie信息。

①fetch中需要配置credentials為same-origin

  • omit: 默認值,忽略cookie的發送

  • same-origin: 表示cookie只能同域發送,不能跨域發送

  • include: cookie既可以同域發送,也可以跨域發送

fetch("url", {
        method: 'POST(GET)', credentials: "same-origin" }) .then({}); 

 

②ajax同源傳輸默認自帶Cookie

 

第二種情況:跨域,大多數未攜帶的情況為跨域請求。

①fetch中需要配置credentials為include

  • omit: 默認值,忽略cookie的發送

  • same-origin: 表示cookie只能同域發送,不能跨域發送

  • include: cookie既可以同域發送,也可以跨域發送

 

fetch("url", {
        method: 'POST(GET)',
        credentials: "include" })
    .then({});        

②ajax中需要開啟withCredentials為true

$.ajax({
    type: "POST",                
    url: `xxx`,
    dataType: "application/x-www-form-urlencoded",
    xhrFields: {withCredentials: true},//支持跨域發送cookies
    crossDomain:true,//發送Ajax時,Request header 中會包含跨域的額外信息,但不會含cookie
    success: function (data) {
        if (data) {
           callback(data)
        }
    }
});

 

第三種情況,http發送到https服務,首先肯定是跨域請求,其次https是默認不接收http傳輸的Cookie的,所以在上面操作的基礎上,我們需要改下Cookie配置。

設置secure為false,實現了cookie的跨協議傳遞,但是有被竊聽的風險。

document.cookie = "name=EX;expires=60*24*7;secure=false";

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM