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

标签 authentication cookies google-chrome-extension websocket

我正在构建一个 chrome 扩展。在其中,我使用了这段代码:

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

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

我需要的是:

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

我怎样才能做到这一点?

最佳答案

创建 cookie 的域可以决定是否允许子域查看 cookie。只有 cookie 的创建者可以对此做任何事情。如果 www.example.comexample.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;"

关于authentication - 使用 chrome WebSockets 时如何传递额外的 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35140699/

相关文章:

javascript - Chrome 分机 : Javascript interrogate URL string for hostname

javascript - 如何在启用扩展时拥有内容脚本功能而无需重新加载网页?

javascript - 在 Angular SPA 中存储凭证

java - UrlRewriteFilter 使用 FORM 身份验证重定向到错误的 login.html 页面

authentication - 如何在 Camunda Java api 中强制进行身份验证?

Python ejabberd Auth 脚本不响应数据库中的更改

C# 从字符串创建 cookie 并发送它

php - 使用 Codeception 提交表单时的 cookie 无效

javascript - 在 browser_action Chrome 扩展中设置当前选项卡的 window.location.href

android - 无法从 Android 中的 SharedPreferences 访问字符串