我有以下情况:
- another_domain.com页面中带有src=domain1.com的Javascript标记
- Javascript标记从domain1.com服务器返回cookie头和脚本内容
- 脚本内容收集数据并通过请求发送到domain1.com
我希望能够在点2中设置cookie,并在点3中恢复它。我已经能够通过返回这样的set-cookie头来设置cookie:
设置cookie:cookieName=";cookieValue;;版本=1;Domain=domain1.com;路径=/;SameSite=无;最大年龄=600;安全
但我无法在第3点的请求中恢复它,因为cookie没有随请求一起发送。
因此,在这一点上有两个问题:
-
我需要在第二个请求中手动发送cookie吗?当测试进行重定向时,cookie头是"0";自动连接的";到第二个请求,我可以恢复它,但javascript标记的请求不会发生这种情况。
-
我只能在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-Credentials
到true
,请在此处查看。
利用这种配置,cookie将是"0";自动连接的";(按照你的话(在第三步。出于安全原因,您不能在跨域设置上通过JS设置cookie,请参阅此响应。