如何使用SameSite None和Secure正确设置跨域Cookie?

我继承了一个网站进行维护。它使用两个不同的第三方程序,并使用iFrame设置cookie在两者之间传输信息。该信息不是特别敏感。

使用所有内容的通用版本,例如:
*工具1:www.xyzWarehouse.com
*工具2:www.xyzCorp.com
*中间页面:tools.xyzCorp.com

  1. xyzWarehouse为tools.xyzCorp.com/setTransferCookies.jsp打开了一个小型iFrame
  2. setTransferCookies.jsp设置域xyzCorp的cookie。
  3. xyzWarehouse然后运行一个黑框,该框打开xyzCorp正确页面的URL
  4. xyzCorp上的自定义JS代码然后打开这些cookie,并使用它们预填充表单字段。

我最近一直在尝试更新cookie,以解决浏览器安全要求方面的变化。目前,我当前的问题是尝试使用SameSite:无和安全来使Cookie在Chrome上运行。

从长远来看,我们希望所有三个位置都像这样:
* www.xyzWarehouse.com
* corp.xyzWarehouse.com
* tools.xyzWarehouse.com

但是,这必须经过IT部门的繁文tape节,并涉及管理员对tool1和tool2的更改。我们需要一个中间解决方案来保持我们的发展。

这是我尝试过的:

原始代码1:使用.jsp

cookieString = cookieString.substring(0,cookieString.length()-1) + "}";
Cookie cookie = new Cookie ("xyzTracking",cookieString);
cookie.setMaxAge(365 * 24 * 60 * 60);
cookie.setDomain("xyzWarehouse.com");
response.addCookie(cookie);

我似乎找不到包含相同网站的Cookies版本,因此可能无法使用它。如果我错了,请告诉我。当然,这会给我一个错误,告诉我我需要使用SameSite:无

尝试2:使用JavaScript

for (i=0;i<attPairs.length;i++) {
    var pair = attPairs[i].split("=");
    params[pair[0]] = pair[1];
}
jQuery.cookies.set( 'xyzTracking',params,{expiresAt: date,domain:'xyzWarehouse.com',sameSite: 'None',secure: 'true'});

Chrome投诉-有关同一网站的错误。

尝试3:使用JavaScript

for (i=0;i<attPairs.length;i++) {
    var pair = attPairs[i].split("=");
    params[pair[0]] = pair[1];
}
document.cookie = "xyzTracking=" + encodeURIComponent(params) + "; domain=xyzWarehouse.com; SameSite=None; Secure";

Chrome投诉-有关同一网站的错误

尝试4:使用.jsp

cookieString = cookieString.substring(0,cookieString.length()-1) + "}";
response.setHeader("Set-Cookie","xyzTracking="+cookieString+"; SameSite=none; Secure; Domain=xyzWarehouse.com");

Chrome会在不报告任何错误的情况下让此程序运行,但从另一方面来讲,www.xyzWarehouse.com告诉我没有设置cookie。

我做错了什么以及如何解决?我没有.jsp方面的经验,我有很多JavaScript方面的经验,但是老实说,我尝试编程以尽可能避免使用cookie,因此我几乎不必设置它们。我设置的那些域名从来都不是跨域的。

loelesszxq 回答:如何使用SameSite None和Secure正确设置跨域Cookie?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2634933.html

大家都在问