为什么设置的 Cookie 在跨域请求时没被自动带上?
我在本地开发时,前端用 localhost:3000,后端 API 是 localhost:8080。登录接口成功返回了 Set-Cookie,浏览器也确实存下了这个 cookie,但后续请求却没自动带 Cookie,导致一直 401。我试过在 fetch 里加 credentials: 'include',但还是不行。
后端已经设置了 CORS 响应头:
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
res.setHeader('Access-Control-Allow-Credentials', 'true');
是不是还漏了什么配置?为什么 cookie 不随请求一起发出去?
首先确保前端请求的地址和后端设置的 Allow-Origin 要完全匹配,包括协议、端口。虽然都是 localhost,但最好明确写成 http://localhost:3000。
然后重点来了,在后端需要设置
Access-Control-Allow-Headers来允许Cookie头。加上这个:另外记得在 fetch 请求时,除了 credentials: 'include',还需要设置 mode 为 'cors':
最后检查下 Set-Cookie 的
Domain和Path属性是否合适,默认情况下它们可能会限制 cookie 的发送范围。希望这些能帮你搞定这个问题,搞跨域真的容易让人抓狂啊。