我正在构建Chrome扩展程序。在其中,我使用此代码:
new WebSocket("wss://api.example.com/");
问题是我浏览器中带有cookie的网站是WWW.example.com
,因此WebSockets不会传递会话cookie。
我需要的是:
new WebSocket("wss://api.example.com/", { "cookies": [ { "session": sessionKey } ] });
我怎样才能做到这一点?
答案 0 :(得分:4)
创建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;"