首页 > 其他 > 详细

设置请求头中携带cookie,但是不起作用的几种情况总结,针对于客户端解决。

时间:2021-07-07 23:53:15      阅读:44      评论:0      收藏:0      [点我收藏+]

第一种情况:同源请求时,开启携带凭据传输后,会自动携带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";

 

设置请求头中携带cookie,但是不起作用的几种情况总结,针对于客户端解决。

原文:https://www.cnblogs.com/tigerK/p/14983304.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!