HTTP 100和200状态码有什么区别?

5
HTTP 状态码中,100200有什么区别?
它们相同吗?
我被告知,当 HTTP 请求成功且没有任何错误时,200是标准状态码。
是这样的吗?
100 状态码呢?我发现对于这个状态码有不同的解释。有人能举个现实世界的例子来解释一下吗?
因为现在我不知道两者之间的区别,它们对我来说似乎都一样。
2个回答

6

让我举个例子:

当您使用PUT请求向服务器发送大型对象时,您可以包含一个像这样的Expect头部信息

PUT /media/file.mp4  HTTP/1.1
Host: api.example.org
Content-Length: 1073741824
Expect: 100-continue

这将告诉服务器,如果服务器能够接受请求,它应该响应100 Continue状态码:

HTTP/1.1 100 Continue

当客户端收到此响应时,它会告诉客户端服务器将接受请求,并且可以开始发送请求正文。
这里的主要好处是,如果请求出现问题,服务器可以在客户端开始发送请求正文之前立即响应错误。
一个简单的用例是,服务器可能首先要求使用401未经授权进行身份验证,或者它可能事先知道客户端想要发送到服务器的Content-Type不是服务器想要接受的。 主要引用自: https://evertpot.com/http/100-continue/ https://www.rfc-editor.org/rfc/rfc7231#section-5.1.1

3

来源:http://www.rfc-editor.org/rfc/rfc7231.txt

6.2.1. 100 Continue

100(继续)状态码表示服务器已接收请求的初始部分并尚未被拒绝。服务器打算在完全接收和处理请求后发送最终响应。

当请求包含一个包含100-continue期望的Expect头字段时,100响应表示服务器希望接收请求有效载荷正文,如第5.1.1节中所述。客户端应继续发送请求并丢弃100响应。

如果请求未包含包含100-continue期望的Expect头字段,则客户端可以简单地丢弃此中间响应。

(经过编辑,感谢 Julian 的指出 :)


请你能否举一个真实的例子来说明一下?我完全不理解那些术语。;) - aspentistar
正确,但你引用的是过时的规范。相关的是RFC 7230和RFC 7231。 - Julian Reschke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接