繁体   English   中英

从 javascript 标签请求中设置和获取 cookie

[英]Setting and getting a cookie back from a javascript tag request

我有以下情况:

  1. 在 another_domain.com 页面中带有 src=domain1.com 的 Javascript 标签
  2. Javascript 标签从 domain1.com 服务器返回一个 cookie header 和脚本内容
  3. 脚本内容收集数据并通过请求发送到 domain1.com

我希望能够在第 2 点设置一个 cookie,并在第 3 点恢复它。我已经能够通过返回 Set-Cookie header 来设置 cookie,如下所示:

设置 cookie: cookieName="cookieValue";Version=1;Domain=domain1.com;Path=/;SameSite=None;Max-Age=600;Secure

但是我无法在第 3 点的请求中恢复它,因为 cookie 没有随请求一起发送。

所以,此时有两个问题:

  1. 我需要在第二个请求中手动发送 cookie 吗? 在进行重定向测试时,cookie header 被“自动附加”到第二个请求,我能够恢复它,但是来自 javascript 标签的请求不会发生这种情况。

  2. 我只能在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM