![](/img/trans.png)
[英]JavaScript fetch POST request not setting cookie from same origin
[英]Setting and getting a cookie back from a javascript tag request
我有以下情况:
我希望能够在第 2 点设置一个 cookie,并在第 3 点恢复它。我已经能够通过返回 Set-Cookie header 来设置 cookie,如下所示:
设置 cookie: cookieName="cookieValue";Version=1;Domain=domain1.com;Path=/;SameSite=None;Max-Age=600;Secure
但是我无法在第 3 点的请求中恢复它,因为 cookie 没有随请求一起发送。
所以,此时有两个问题:
我需要在第二个请求中手动发送 cookie 吗? 在进行重定向测试时,cookie header 被“自动附加”到第二个请求,我能够恢复它,但是来自 javascript 标签的请求不会发生这种情况。
我只能在 https(安全 cookie)中设置一个 cookie,并且脚本中的 SameSite=None? 在没有 Secure 和 SameSite=None 的情况下或在 http 环境中尝试时,未设置 cookie,开发人员控制台抛出跨站点错误。
谢谢阅读。
这里有几件事需要考虑。 首先我们要注意,我们面临的是跨域通信的情况。
如果在第3步中需要发送第2步中服务器设置的Cookie,则必须在请求时显式配置。 如果您使用的是 XMLHTTPRequest,则必须将withCredentials
设置为 true, 这是文档。 如果您使用的是 fetch, 请查看 Request credentials 。
由于它是跨域通信,请确保您的 CORS 标头已正确配置。 当请求凭证模式为“include”时,您需要将Access-Control-Allow-Origin
header 设置为有效而非通配符"*"
。 您还需要将Access-Control-Allow-Credentials
设为true
, 在此处检查。
使用此配置,cookie 将在第三步中“自动附加”(按照您的话)。 出于安全原因,您不能通过 JS 在跨域设置上设置 cookie,请参阅此回复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.