请帮我澄清我对cookie的理解,以及在这种情况下可以做什么
mycompany-example.com
有一个小部件服务,可以在给定网站上注入html和JS代码以及有用的内容@api.mycompany-example.com
website.mycustomer-example.com
,他在其中添加了我们的小部件。他们添加了一个 div 和一个脚本,该脚本从我们的 API @ api.mycompany-example.com
请求 html/JS 代码,并用内容填充此 div(响应是 JS 响应)www.mycompany-example.com
www.mycompany-example.com
时,我们希望准确跟踪我们的客户来自哪个小部件,如果可能的话,不诉诸 URL 参数或任何可能被阻止的广告跟踪 cookie(目前我们在 4 的 URL 中使用 URL 参数。) .问题:我可以从 2. 和 3. 中创建域
widget_id
的服务器端 httpOnly cookie(包含 mycompany-example.com
),可以在步骤 5. 当用户访问我们的网站时使用,以便我们知道哪个小部件他们来自哪里?
纠正我的理解,但是在步骤 2. 或 3. 创建此类 cookie 时,它将被视为客户网站的第三方 cookie
website.mycustomer-example.com
。这就是 Chrome(以及整个网络?)未来将被放弃的内容,我们应该停止使用。
但是,浏览器是否仍允许设置此 cookie,以便稍后在用户最终访问我们的网站时使用该 cookie?
我的理解是否存在差距或我遗漏的安全问题?
当
*.mycustomer-example.com
上的 HTML 页面包含从不同域(如 <script>
)(您的步骤 2)加载 Javascript 的 *.mycompany-example.com
元素时,Javascript 响应可以设置 cookie。但这将是第三方 cookie,因此会被浏览器阻止(Google Chrome 将强制执行此类阻止从 2024 年开始)。
即使将其设为分区 cookie 也无济于事:HTTP 标头
Set-Cookie: widget_id=xxx; SameSite=None; Secure; Partitioned
Javascript 响应中的 设置 浏览器中的 cookie,但浏览器只会在顶级页面仍然来自 *.mycustomer-example.com
时才重新发送
它。当用户在
*.mycompany-example.com
打开新选项卡(您的第 5 步)时,它不会发送cookie。您在嵌入和不嵌入中使用相同 Cookie 的用例与广告跟踪无法区分,因此将被阻止。我建议您只需将想要传输的信息放在 URL 参数中即可。您认为这与 cookie 相比有何缺点?