49

考虑一个大的 HTTP 请求:

POST /upload HTTP/1.1
Content-Type: multipart/form-data
Content-Length: 1048576

...

客户端现在开始上传 1 兆字节的数据,这可能需要一段时间。但是,服务器确定需要 HTTP 授权,因此它决定将使用HTTP 401 Unauthorized.

服务器必须等到它收到整个请求(IE,标头 + CRLF CRLF +Content-Length字节)才能响应?

实际上,这种行为会破坏任何浏览器吗?浏览器是否会继续上传文件,或者如果收到“过早”响应,它们会停止传输吗?

更重要的是,在这种情况下,他们是否能够成功验证并再次开始上传(使用凭据),还是像这样切断上传不可靠?

4

1 回答 1

35

查看定义协议的 RFC 2616,在第 8.2.2 节监视连接以获取错误状态消息,它指出

发送消息正文的 HTTP/1.1(或更高版本)客户端应该在传输请求时监视网络连接的错误状态。如果客户端看到错误状态,它应该立即停止传输正文。

所以我会说使用你可以跳入发送 401 错误。然后查看 10.4.2 401 Unauthorized

该请求需要用户身份验证。响应必须包含一个 WWW-Authenticate 头字段(第 14.47 节),其中包含适用于所请求资源的质询。客户端可以使用合适的 Authorization 头域重复请求

声明客户端可以使用合适的凭据重试。

然而,我还没有进行任何实验来查看浏览器的实际性能。

于 2013-01-23T15:59:53.357 回答