WebSocket服务器应该只处理GET请求吗?

WebSocket服务器应该只处理GET请求吗?,websocket,Websocket,我编写了一个WebSocket服务器,它只处理GET请求的升级请求。如果出现带有所需标题的POST或任何其他类型的请求,它将由HTTP服务器处理 在中,没有明确说明WebSocket升级请求应该是GET请求。 如果升级请求不是GET请求,服务器是否应将其作为WebSocket升级请求处理,是否应将其传递给HTTP服务器处理,或者是否应使用类似于400 Bad request的状态代码对其进行响应 如果服务器决定不处理非GET请求的方法,这可能是一个设计决策吗?来自webSocket规范的(客户端

我编写了一个WebSocket服务器,它只处理GET请求的升级请求。如果出现带有所需标题的POST或任何其他类型的请求,它将由HTTP服务器处理

在中,没有明确说明WebSocket升级请求应该是GET请求。 如果升级请求不是GET请求,服务器是否应将其作为WebSocket升级请求处理,是否应将其传递给HTTP服务器处理,或者是否应使用类似于
400 Bad request
的状态代码对其进行响应

如果服务器决定不处理非GET请求的方法,这可能是一个设计决策吗?

来自webSocket规范的(客户端要求),它说:

请求的方法必须是GET,HTTP版本必须是GET 至少为1.1

然后,在稍后的webSocket规范中(阅读客户的开场握手),它说:

客户的开场握手包括以下几个部分。如果 服务器在读取握手时发现客户端没有 不发送符合以下描述的握手(请注意 根据[RFC2616],标题字段的顺序并不重要), 包括但不限于任何违反ABNF语法的行为 为握手的组件指定,服务器必须停止 处理客户端的握手并返回HTTP响应 适当的错误代码(例如400错误请求)

  • HTTP/1.1或更高版本的GET请求,包括“请求URI” [RFC2616]应解释为/资源名称/ 在第3节中定义(或包含 文件名为/resource name/)
  • 因此,有多个地方说http请求必须是GET


    关于你的具体问题:

    WebSocket服务器应该只处理GET请求吗

    是的,webSocket连接总是以GET请求开始,而不是POST或任何其他方法

    如果升级请求不是GET请求,服务器是否应将其作为WebSocket升级请求处理,是否应将其传递给HTTP服务器处理,或者是否应使用状态代码(如400 Bad request)对其进行响应

    如规范的上述参考部分所述,服务器应响应状态代码,如400 Bad Request

    这可能是服务器决定不处理非GET请求的方法的设计决策吗

    是。

    根据webSocket规范的(客户要求),它说:

    请求的方法必须是GET,HTTP版本必须是GET 至少为1.1

    然后,在稍后的webSocket规范中(阅读客户的开场握手),它说:

    客户的开场握手包括以下几个部分。如果 服务器在读取握手时发现客户端没有 不发送符合以下描述的握手(请注意 根据[RFC2616],标题字段的顺序并不重要), 包括但不限于任何违反ABNF语法的行为 为握手的组件指定,服务器必须停止 处理客户端的握手并返回HTTP响应 适当的错误代码(例如400错误请求)

  • HTTP/1.1或更高版本的GET请求,包括“请求URI” [RFC2616]应解释为/资源名称/ 在第3节中定义(或包含 文件名为/resource name/)
  • 因此,有多个地方说http请求必须是GET


    关于你的具体问题:

    WebSocket服务器应该只处理GET请求吗

    是的,webSocket连接总是以GET请求开始,而不是POST或任何其他方法

    如果升级请求不是GET请求,服务器是否应将其作为WebSocket升级请求处理,是否应将其传递给HTTP服务器处理,或者是否应使用状态代码(如400 Bad request)对其进行响应

    如规范的上述参考部分所述,服务器应响应状态代码,如400 Bad Request

    这可能是服务器决定不处理非GET请求的方法的设计决策吗