【问题标题】:Websocket header to reject handshakeWebsocket 标头拒绝握手
【发布时间】:2021-07-17 02:32:01
【问题描述】:

拒绝 websocket 握手的方法是什么。 根据接受握手的文档,来自 http 服务器的响应是这样发送的

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

但是,如果我因为各种原因想拒绝握手,返回 HTTP 代码 403 好还是有其他方法呢?

【问题讨论】:

    标签: http websocket


    【解决方案1】:

    ANY 最终(即非授权、非重定向)HTTP 响应代码(即非授权、非重定向)101 将中止握手,因此请根据正常 HTTP 语义使用对您的需求有意义的任何响应代码。 p>

    RFC 6455:

    101 以外的任何状态码都表示 WebSocket 握手尚未完成,HTTP 的语义仍然适用。

    ...

    如果 |Sec-WebSocket-Accept| value 与期望值不匹配,如果缺少 header 字段,或者 HTTP 状态码不是 101,则无法建立连接,也不会发送 WebSocket 帧。

    ...

    一旦发送了客户端的打开握手,客户端必须等待服务器的响应,然后再发送任何进一步的数据。客户端必须按如下方式验证服务器的响应:

    1. 如果从服务器接收到的状态码不是 101,客户端会按照 HTTP [RFC2616] 程序处理响应。特别是,如果客户端收到 401 状态码,它可能会执行身份验证;服务器可能会使用 3xx 状态码重定向客户端(但客户端不需要跟随它们)等。否则,请执行以下操作。

    ...

    如果服务器的响应不符合本节和第 4.2.2 节中定义的服务器握手要求,则客户端必须_WebSocket 连接失败_。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 2016-04-19
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      相关资源
      最近更新 更多