【发布时间】:2012-11-01 17:49:31
【问题描述】:
我找不到可以回答这个问题的 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 年 正式发布……我想说是时候升级了。 -
@rdlowrey 是的,我现在正在考虑。我只是希望我可以在不更改客户端(iOS、Android 和 Flash)的情况下实现现有基于 PHP 的服务的直接替换。
-
好吧,我自己最近刚刚实现了一个 1.1 客户端(不适用于您列出或我要分享的设备环境),我可以说这并没有那么困难。但是,我希望这些环境已经拥有经过彻底审查的库来为您处理客户端。
-
立即回复错误是可以的(至少,Squid 是这样做的),但立即关闭连接不太常见(可能是manage.py runserver?)。
-
不是一个答案,但它可能是一个正确的方向,因为看起来您正在使用 XMLHttpRequest? developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/…
标签: http google-chrome post boost xmlhttprequest