前端 js 设置cookie的方式及遇到cookie方面的问题
作者:互联网
前端设置cookie的方式及cookie方面的问题
前端axios携带cookie报错或请求失败
首先排查cookie的携带是否有误
我们要知道,axios里的post请求里cookie是放哪的
axios.post(url,{第一个对象里是放后端传回的参数},{第二个人接口是放请求头请求体设置以及cookie是否允许携带设置等})
所以我们cookie放在第二个对象里,在这里cookie其实是默认不允许携带的,他这里是没显示出来
我们直接在第二个对象里设置一个 withCredentials: true;
withCredentials:默认情况下,跨源请求不提供凭据(cookie、HTTP认证及客户端SSL证明等)。通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据。默认值为false。
true:在跨域请求时,会携带用户凭证
false:在跨域请求时,不会携带用户凭证;返回的 response 里也会忽略 cookie
当配置了 withCredentials = true时,必须在后端增加 response 头信息Access-Control-Allow-Origin,且必须指定域名,而不能指定为*!!!
也可以在axios外写对所有 axios 请求做处理:axios.defaults.withCredentials = true;
方法有很多种(这里是我常遇到的)
**
然后再次查找cookie是否设置有误
**
在axios外写上后端需要你携带的cookie,格式是:
document.cookie=’ 后端传的cookie写这里面 ’
如以上代码还是有问题的话可能是浏览器的版本问题,需要手动在浏览器cookie设置
**打开谷歌浏览器在Chrome中访问 chrome://flags/ ,搜索SameSite并设置为disabled即可。
原因是Chrome升级到80版本之后cookie的SameSite属性默认值由None变为Lax,这也就造成了一些访问跨域cookie无法携带的问题。
操作步骤如下**
图片
若以上都写上了还是有问题可以和后端联系下看看是否他那有问题
这些是我遇到cookie问题的总结,希望能帮到大家
标签:axios,请求,携带,js,cookie,true,前端,withCredentials 来源: https://blog.csdn.net/v_jinfuwu/article/details/115282802