HTTP 1.0服务器是否允许在接收完整请求前回复客户端?

6

我找不到能回答这个问题的RFC。也许你们可以指引我正确的方向。

我正在实现一个简化版的http服务器,其唯一功能是接受大型多部分编码上传。

在某些情况下,例如文件过大或客户端未经授权上传,我希望服务器立即回复错误并关闭连接。

Chrome浏览器似乎不喜欢它,因为它认为服务器返回了http代码零。

Could not get any response

This seems to be like an error connecting to http://my_ubuntu:8080/api/upload. The response status was 0.
Check out the W3C XMLHttpRequest Level 2 spec for more details about when this happens.

因此问题是:
HTTP服务器是否允许在接收完整请求之前回复客户端?
更新:刚刚与iOS 6客户端进行了测试。同样的情况,它认为服务器突然关闭了连接 :(

有趣的问题。我找不到任何地方明确禁止这样做。但是,如果您编写一个 HTTP/1.1 服务器,您将可以访问 Expect 标头和 100 Continue 响应,这样您的生活可能会更简单。这正是它们旨在解决的情况。我的意思是,HTTP/1.1 在 1994 年成为官方标准...我认为现在是时候升级了。 - user895378
@rdlowrey 是的,我现在正在考虑这个问题。我只是希望能够实现现有基于PHP的服务的无缝替换,而不需要更改客户端(客户端包括iOS、Android和Flash)。 - expert
嗯,最近我自己实现了一个1.1客户端(不是你列出的设备环境,否则我会分享),我可以说它并不是那么难。然而,我希望这些环境已经有了经过彻底审核的库来处理客户端。 - user895378
可以立即回复错误信息(至少Squid是这样做的),但立即关闭连接则较少见(例如manage.py runserver?)。 - JasonPlutext
不是答案,但也许可以指引正确的方向,因为看起来你正在使用XMLHttpRequest?https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Submitting_forms_and_uploading_files - groovecoder
2个回答

1

0

我认为这是证书信任问题。尝试手动信任该网站,随后的请求应该可以正常工作。


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