我正在构建一个chrome扩展程序。在其中,我使用以下代码:
new WebSocket("wss://api.example.com/");
问题是我的浏览器中带有cookie的网站WWW.example.com
,因此WebSockets不会传递会话cookie。
我需要的是这个:
new WebSocket("wss://api.example.com/", { "cookies": [ { "session": sessionKey } ] });
我怎样才能做到这一点?
创建 cookie 的域可以决定是否允许子域查看 cookie。 只有 cookie 的创建者才能对此做任何事情。 如果www.example.com
example.com
设置cookie并允许子域查看它,那么api.example.com
将能够看到它。 否则,api.example.com
将不被允许看到该cookie。 这就是浏览器安全性的工作原理。
如果您知道Javascript中的sessionKey
,则可以将其设置为允许子域的example.com
cookie,然后它将自动与webSocket请求一起发送到www.example.com
。 您不会明确发送 Cookie。 您在域上设置 Cookie 并允许访问子域。 然后,cookie 将在 Ajax 调用和 webSocket 连接请求中自动发送。
在特定情况下,您可以执行以下操作:
document.cookie = "session=" + sessionKey + ";path=/;domain=example.com;"