Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用SameSite None和Secure正确设置跨域Cookie?_Javascript_Jsp_Cookies_Websecurity - Fatal编程技术网

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

Javascript 如何使用SameSite None和Secure正确设置跨域Cookie?,javascript,jsp,cookies,websecurity,Javascript,Jsp,Cookies,Websecurity,我继承了一个网站来维护。它使用两个不同的第三方程序,并使用iFrame设置cookie在这两个程序之间传输信息。这些信息并不特别敏感 使用所有内容的通用版本,比如: *工具1:www.xyzWarehouse.com *工具2:www.xyzCorp.com *中间页面:tools.xyzCorp.com xyzWarehouse为tools.xyzCorp.com/setTransferCookies.jsp打开一个小iFrame setTransferCookies.jsp为域xyzCorp

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

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

  • xyzWarehouse为tools.xyzCorp.com/setTransferCookies.jsp打开一个小iFrame
  • setTransferCookies.jsp为域xyzCorp设置cookies
  • 然后,xyzWarehouse运行一个黑框,打开xyzCorp正确页面的URL
  • 然后,xyzCorp上的自定义JS代码打开这些cookie并使用它们预填充表单字段
  • 我最近一直在尝试更新cookies,以考虑浏览器安全要求的变化。目前,我当前的问题是试图让cookies在Chrome上运行,使用SameSite:None和Secure

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

    但这必须通过繁文缛节进行,并涉及到对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);
    
    cookieString = cookieString.substring(0,cookieString.length()-1) + "}";
    response.setHeader("Set-Cookie", "xyzTracking="+cookieString+"; SameSite=none; Secure; Domain=xyzWarehouse.com");
    
    我似乎找不到涉及samesite的Cookies版本,所以可能无法使用此版本。如果我错了,请告诉我。当然,这个错误告诉我需要使用SameSite:None

    尝试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'});
    
    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会让它在不报告任何错误的情况下运行,但在另一边,试图检索cookies时,www.xyzWarehouse.com告诉我没有设置cookies

    我做错了什么?我如何修复它?我在.jsp方面没有任何经验,我在JavaScript方面有很多经验,但老实说,如果可能的话,我会尽量避免使用cookies,所以我几乎不需要设置cookies。我所设置的那些从未跨域