【发布时间】: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=None 和Secure,Chrome 的未来版本将只提供带有跨站点请求的cookie。您可以在 Application>Storage>Cookies 下的开发人员工具中查看 cookie,并在 https://www.chromestatus.com/feature/5088147346030592 和 https://www.chromestatus.com/feature/5633521622188032 上查看更多详细信息
【问题讨论】:
-
由该提供商来适当地设置 cookie。
-
其他服务器是否阻止了您的呼叫?可能与 CORS 相关,您需要在后端代理调用
-
我在上面添加了更多信息
-
添加了实际的 Chrome 警告
标签: javascript web