我可以从 Socket.io 访问 cookie 吗?
我想在 cookie 中设置一些用户信息并能够在连接时访问它,这可能吗?
I want to set some user information in a cookie and be able to access it on connection, is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 Socket.IO 0.8.7,您可以通过以下方式访问请求标头:
您可以在 https://github.com/ 找到更多详细 LearnBoost/socket.io/wiki/Authorizing
Using Socket.IO 0.8.7, you can access request headers via:
You can find more detail on this at https://github.com/LearnBoost/socket.io/wiki/Authorizing
client.request.headers.cookie
会导致竞争条件,因为 cookie 始终指向最后登录的用户。请参阅:Socket.IO 身份验证。
client.request.headers.cookie
leads to race conditions as the cookie always points to the last logged in user.Please see: Socket.IO Authentication.
我明白了,这有效:
I got it, this works:
查看engine.io源代码后,您可以使用以下方式设置cookie:
此代码可能与设置sid cookie的engine.io代码冲突。
因为 HTTP/1.1 和 HTTP/2 标头都不区分大小写,并且 engine.io 在标头对象中使用“Set-Cookie”,添加小写对象名称“set-cookie”可以避免此问题。
After looking to the engine.io source code you can set cookies using:
this code could conflict with the engine.io code that set the sid cookie.
as both HTTP/1.1 and HTTP/2 headers are case-insensitive and engine.io use 'Set-Cookie' in the headers object adding a lowercase object name 'set-cookie' would avoid this problem.