node.js - web socket 无法在 Safari 中使用 nodejs 读取 http 生成的 cookie
问题描述
我有以下代码在 http 中生成 cookie,后来我希望 cookie 能够被 websocket ( ws )读取
问题是当我通过localhost打开页面时,cookie 能够由 http nodejs 控制器生成,并且 ws 能够访问 cookie。
但是,当我通过 192.168.0.3 等IP 地址打开 http 时,我可以看到 cookie 是由 http 生成的,但 ws 无法读取它。我检查了 ws 的请求标头,但不包括 cookie。上述方案在 Chrome 浏览器上运行良好,但在 Safari 13.0.3 上无法运行
以下是我生成 http cookie 的代码(我使用koa2)
ctx.cookies.set('token', token, {
httpOnly: false,
expires: expiryDate,
})
以下是我在nodejs中读取cookie的方式
let cookies = new Cookies(req, null);
console.log(JSON.stringify(req.headers)); //The header does not contain cookie in Safari 13.0.3 with IP address but in Chrome I can see the header has cookie
let token = cookies.get('token');
console.log('Cookie token is: ' + token); //token value is undefined
请帮忙。
解决方案
好的,原因是当我从 html 页面的 javascript 调用 ws 时,我将 ws 服务器的地址分配为 localhost,这就是为什么当 ws 服务器收到请求时它无法读取由 http 设置的 cookie,这是一个 IP 地址
推荐阅读
- python-3.x - 获取类型错误:函数在使用 image_slicer python 时恰好需要 6 个参数(给定 5 个)
- ruby-on-rails - 如何为 rails 编写一个范围(使用 has_scope)来查找在两个给定日期之间具有 created_at 日期的订单(start_date 和 end_date)
- javascript - 无法访问打字稿中的数据
- java - 二元运算符的错误操作数类型,“<=”不起作用,即使我相信我正在使用整数
- flutter - 如何在 IgnorePointer 的子级中覆盖 IgnorePointer?
- firebase - firebase tools.firestore 云函数中未解析的变量firestore
- python - 将批次、高度、宽度、alpha 更改为 pytorch 的批次、alpha、高度、宽度
- c# - C#如何添加记录
- haskell - 是否可以使用(共)递归创建有效的重组树?
- excel - Excel VBA:尝试添加超链接时出现运行时错误 1004 应用程序定义或对象定义错误