设置并从javascript标记请求中获取cookie



我有以下情况:

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

我希望能够在点2中设置cookie,并在点3中恢复它。我已经能够通过返回这样的set-cookie头来设置cookie:

设置cookie:cookieName=";cookieValue;;版本=1;Domain=domain1.com;路径=/;SameSite=无;最大年龄=600;安全

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

因此,在这一点上有两个问题:

  1. 我需要在第二个请求中手动发送cookie吗?当测试进行重定向时,cookie头是"0";自动连接的";到第二个请求,我可以恢复它,但javascript标记的请求不会发生这种情况。

  2. 我只能在https(安全cookie(中设置cookie,并且脚本中的SameSite=None?当在没有Secure和SameSite=None的情况下或在http环境中尝试时,未设置cookie,开发人员控制台会引发跨站点错误。

感谢阅读。

这里有几件事需要考虑。首先,我们必须注意到,我们面临着跨领域通信的情况。

如果您需要在步骤3中发送服务器在步骤2中设置的Cookie,则在发出请求时必须对其进行明确配置。如果使用XMLHTTPRequest,则必须将withCredentials设置为true,下面是文档。如果您正在使用fetch,请查看请求凭据。

由于这是一种跨域通信,请确保您的CORS标头配置正确。当请求凭证模式是"认证"模式时;包括";您需要将Access-Control-Allow-Origin标头设置为有效的内容,而不是通配符"*"。您还需要Access-Control-Allow-Credentialstrue,请在此处查看。

利用这种配置,cookie将是"0";自动连接的";(按照你的话(在第三步。出于安全原因,您不能在跨域设置上通过JS设置cookie,请参阅此响应。

最新更新