后端设置了允许跨域,但是又出现无法携带cookie的问题,下面这篇文章给了思路
原因:
默认情况下,跨源请求不提供凭据(cookie、HTTP认证及客户端SSL证明等)
如果发送的是带凭据的请求,但服务器的相应中没有相关的头部,那么浏览器就不会把相应内容交给JavaScript,请求就无法得到结果的数据(浏览器得到了,但是我们请求的方法得不到,因为被浏览器拦截了)
解决办法:
后端
// 响应头表示是否可以将对请求的响应暴露给页面
Access-Control-Allow-Credentials: true
// 允许跨域操作的具体域名------------------------------------指定的特定的
Access-Control-Allow-Origin: "http://localhost:8080"
// 允许跨域操作的具体域名------------------------------------非特定域名------使用origin 切记不能用*
Access-Control-Allow-Origin: origin
// 允许跨域的HTTP方法-----这些方法根据你们使用情况增减
Access-Control-Allow-Methods: ["GET","POST","DELETE"]
// 列出将会在正式请求的 Access-Control-Expose-Headers 字段中出现的首部信息-----------根据接口需要的数据类型进行设置
Access-Control-Allow-Headers: ["Content-Type", "Authorization", "Accept"]
前端
表示跨域请求时是否需要使用凭证
axios.defaults.withCredentials = true
网友评论