如何从JavaScript WebSocket客户端向服务器发送自定义标头?

时间:2017-12-01 09:25:53

标签: javascript java websocket client-server

我知道没有相同的标准JS WebSocket API。我的主要目标是将来自JS web-socketclient的resourceIdroutingInfoauth-tokenprotocol等信息发送到服务器。

我可以想到以下几种方法。如果我的方法很好或者还有其他更好的方法,请分享想法:

  1. 我们可以使用Cookie从客户端发送自定义标头并在服务器端检索它们吗?

  2. 我们可以使用web-storage API将它们存储在浏览器中并在服务器端检索它们吗?

  3. PS:我使用的是基于Java的服务器

1 个答案:

答案 0 :(得分:3)

假设您正在讨论来自浏览器的webSocket连接,以下是传送其他“类似标题”信息的传统选择。

  1. 您可以将它们编码为初始网址上的查询参数,除了auth-token之外的所有内容都可能正常。
  2. 如果您连接webSocket连接的原点与网页的原点相同,那么您可以将参数放入cookie中,这些cookie将与原始webSocket连接请求一起发送,服务器可以在此处检索它们连接请求。
  3. 您可以与服务器建立“有条件”的webSocket连接,然后在后续的webSocket消息中发送凭据。您必须在服务器上实现安全性,以便“有条件”连接的webSocket不允许执行任何其他操作,除非进行身份验证,如果适当的凭据不会很快到达,可能会超时连接。
  4. 听起来您可能已经知道,webSockets的浏览器界面不允许在启动webSocket连接的初始HTTP请求上使用自定义标头。这些自定义标头可以来自其他类型的客户端 - 只是webSocket连接的浏览器界面没有该功能。

      

    我们可以使用网络存储API将它们存储在浏览器中并检索它们吗?

    网页中的Javascript可以使用网络存储API在浏览器中存储数据,以后可以从同一来源的页面中的其他脚本检索数据。该数据不可用于服务器,只能在客户端中使用。