Tomcat仍然发送;继续100“;当没有请求主体发送时。比如401个未经认证的案例

Tomcat仍然发送;继续100“;当没有请求主体发送时。比如401个未经认证的案例,tomcat,servlets,Tomcat,Servlets,Tomcat还为401个未经验证的案例发送了100个,但实际上没有人发送。 根据,当没有任何主体正在读取时,服务器应为100或实际状态代码(本例中为401),但不能同时为两者 这似乎违反了RFC的定义。 我们可以将tomcat行为更改为与RFC定义相同吗 对HTTP/1.1源服务器的要求: - Upon receiving a request which includes an Expect request-header field with the "100-continue" e

Tomcat还为401个未经验证的案例发送了100个,但实际上没有人发送。 根据,当没有任何主体正在读取时,服务器应为100或实际状态代码(本例中为401),但不能同时为两者

这似乎违反了RFC的定义。 我们可以将tomcat行为更改为与RFC定义相同吗

对HTTP/1.1源服务器的要求:

  - Upon receiving a request which includes an Expect request-header
    field with the "100-continue" expectation, an origin server MUST
    either respond with 100 (Continue) status and continue to read
    from the input stream, or respond with a final status code. The
    origin server MUST NOT wait for the request body before sending
    the 100 (Continue) response. If it responds with a final status
    code, it MAY close the transport connection or it MAY continue
    to read and discard the rest of the request.  It MUST NOT
    perform the requested method if it returns a final status code.
以下是wireshark日志:
这是一个Tomcat bug。正确的响应标题是“100 continue”,而不是“100”。建议您更改web应用程序服务器。

您看到的是过时的rfc。正确的rfc是,观察到的行为没有违反它。即使对于rfc7231,也有类似的定义。原始服务器在收到HTTP/1.1(或更高版本)请求行和包含100 continue预期并指示请求消息正文的完整标头部分后,必须立即发送带有最终状态代码的响应,如果仅通过检查请求行和标题字段即可确定该状态,或者发送即时100(继续)响应以鼓励客户端发送请求的消息正文。是的,因此它发送100,接收请求正文,然后发送401,这与rfc完全一致,否?来自定义,它应该立即发送带有最终状态代码的响应(不需要100),或者发送100并继续发送正文。情况是,它没有收到请求正文,但仍然发送100。在这种情况下,我想不需要100,因为不会收到请求主体。