这个问题与我问的这个问题有关
总而言之,我目前正在使用 websockets,并且试图了解如何验证使用 websocket 连接连接到服务器的客户端。
在正常连接上,我使用基于令牌的身份验证,我基本上只是在登录后从服务器获取一个令牌。每次我向服务器发出请求时,我都会将它放在一个名为 Authentication 的自定义标头中,我的服务器会从中读取它那里。
对于 websockets,这不起作用,因为 websockets 没有自定义标头。我有两个选择来传递这个令牌。
1)将令牌放在查询字符串中 - 显然不是一个很好的选择。令牌可以由服务器等记录。
2) 将令牌放入 cookie - 这有效,但仅当客户端和服务器位于同一域时。还有其他限制,例如客户端必须是浏览器并支持 cookie 等。
无论如何,另一个问题是试图找到解决方案,这个问题是关于理解为什么这是一个问题。为什么 websockets 不支持自定义标头?这不太可能是疏忽——websockets 和基于令牌的身份验证都是相当成熟的技术。在 websocket 连接期间允许自定义标头是否存在某种安全问题?