3 回答
TA贡献1811条经验 获得超5个赞
这与 CORS 无关。这就是 cookie 的工作原理。
标头中的域set-cookie表示http://localhost:3000,但请求是针对http://localhost:5000.
那是不同的来源,无效的 cookie 也是如此。
来自一个来源的标头不可能为set-cookie不同的来源设置 cookie。http://localhost:5000只能为http://localhost:5000.
如果你真的想设置一个cookie,:3000那么解决方法是通过cookie以外的其他格式提供数据(例如在请求正文中),然后让客户端JS使用文档http://localhost:3000设置cookie 。饼干 API。
如果您想设置 cookie :5000(这似乎更有可能),请在set-cookie标题中获取端口号。
const csrfProtection = csrf({
cookie: {
maxAge: 900,
domain: 'http://localhost:5000'
}
})
TA贡献1801条经验 获得超8个赞
如果有人从 Laravel (sanctum) 登陆这里,可以在他们的本地服务器上试试这个:-
//.env file. Try removing :port from SESSION_DOMAIN
SANCTUM_STATEFUL_DOMAINS="127.0.0.1:8000"
SESSION_DOMAIN="127.0.0.1"
TA贡献1906条经验 获得超3个赞
我今天也遇到了这个问题。我使用的chrome浏览器版本高于80。chrome添加了一个新属性“samesite”来保护来自v51的csrf。chrome v80+ 默认限制跨站设置cookie,使cookie无效。 控制台警告:在http://XXX.XXX.XXX.XXXX/处设置了与跨站资源关联的 cookie,但未设置该SameSite属性。SameSite=None它已被阻止,因为 Chrome 现在仅在使用和设置时才提供带有跨站点请求的 cookie Secure。
添加回答
举报
