使用chrome WebSockets时如何传递额外的cookie?

时间:2016-02-01 21:29:07

标签: authentication cookies google-chrome-extension websocket

我正在构建Chrome扩展程序。在其中,我使用此代码:

new WebSocket("wss://api.example.com/");

问题是我浏览器中带有cookie的网站是WWW.example.com,因此WebSockets不会传递会话cookie。

我需要的是:

new WebSocket("wss://api.example.com/", { "cookies": [ { "session": sessionKey } ] });

我怎样才能做到这一点?

1 个答案:

答案 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;"