【问题标题】:How to set samesite=none如何设置samesite=none
【发布时间】:2020-09-01 22:51:07
【问题描述】:

我的浏览器页面是从我的服务器加载的,但必须从另一个 - 第三方获取数据。

我第一次调用这个第三方网站的代码是:

    var Vurl = "https://" + info.server + "/rest/system/session";
     var Body = JSON.stringify({name: 'session', value: info.session});

     var xhr = new XMLHttpRequest();

     xhr.open('POST', Vurl, true);
     xhr.withCredentials = true;
     xhr.send(Body);

     xhr.onreadystatechange = function() 
     {
       if(this.readyState == this.HEADERS_RECEIVED) 
       {
         // Get the raw header string
         var headers = xhr.getAllResponseHeaders();
       }
     }

我必须将以下内容放在某个地方,但我不知道在哪里。 google 中的所有搜索都只是说明它是必需的,而不是如何实现它。

 cookie('session', info.session, { sameSite: 'none', secure: true });

您能告诉我在使用 XMLHttpRequest 时设置“samesite”的正确方法吗,如上所示。

谢谢

更多信息:

显示的调用正在向第三方服务器发送信息。第三方回复有一个“会话”cookie,它必须替换现有的会话 cookie。据我所知,除非“withCredentials”设置为 true、samesite=none 且安全,否则 chrome 不会从第三方回复中更新 cookie。我的理解是设置好了,然后chrome会更新浏览器中的cookie。

我要解决的问题是,在调用之后,我向第三方打开了一个 websocket,它希望标头中的“会话”cookie 与从 XMLHttpRequest 返回的相同。

我的理解正确吗?如何实施?

更多添加 - 我正在尝试实施的 Chrome 警告

在没有SameSite 属性的情况下设置了与http://hinkle1.sipworxx.com/ 的跨站点资源关联的cookie。如果设置了SameSite=NoneSecure,Chrome 的未来版本将只提供带有跨站点请求的cookie。您可以在 Application>Storage>Cookies 下的开发人员工具中查看 cookie,并在 https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032 上查看更多详细信息

【问题讨论】:

  • 由该提供商来适当地设置 cookie。
  • 其他服务器是否阻止了您的呼叫?可能与 CORS 相关,您需要在后端代理调用
  • 我在上面添加了更多信息
  • 添加了实际的 Chrome 警告

标签: javascript web


【解决方案1】:

这只是一个 cookie:

Set-Cookie: flavor=choco; SameSite=None; Secure

在你的例子中:

cookie('SameSite', 'None');
cookie('Secure');

来源: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    相关资源
    最近更新 更多