2010-08-07 24 views
0

在Windows CE上,我目前处于一种从零开始实施简单Web服务器的情况。该服务器的主要用途是采用一对一的USB RNDIS连接。服务器由设备上运行的托管应用程序托管。如何在处理标题后立即重定向HTTP POST请求?

因此,我们将POST请求处理与交付的网页紧密集成。不是处理完整的请求并存储过大的POST数据,而是通过接收其标题和其内容流来通知当前页面(由请求标识)。这个解决方案的工作和发光,每个人都很高兴。

现在,这里是一个问题:应用程序的Web界面中的一个页面允许上传软件更新,其大小可以是11MB,例如40MB。在处理此POST请求时,我们有各种验证步骤,例如基于会话Cookie的权限系统。由于所述会话cookie,我们知道客户端是否被允许在所有头部处理完毕后立即上传软件更新。是否有任何方法可以避免必须读取(并放弃)所有POST内容,以便用户得到即时反馈?

我们的第一个想法是在报头处理后返回一个正确的错误消息响应,然后关闭连接,但浏览器(正确地看起来)抱怨由对等体过早地重置。

回答

0

浏览器将要发生全传输。解决方法是让用户更好地响应,可能是在页面上使用AJAX调用 - 所以页面不应该接收数据,而应该进行AJAX调用,以便将异步实际上传到另一个页面。我自己,我会用jQuery来做这件事,但是你可以把这个脚本放在一起,而不需要任何框架来很容易地完成它。

+0

很伤心:-(感谢您的澄清 – Arne 2010-08-10 12:03:01

0

因为我最近给相关的RFC仔细一看:

HTTP 1.1看见一个额外的请求头中包含的那种情景

Expect: 100-Continue 

这告诉服务器来检查请求头并返回一个“确定,你现在可以开始给我发送实际内容”或者“对不起,无论你打算发给我什么,我都无法处理它” - 回应(为了更精确技术细节见the HTTP 1.1 RFC

但是,这并不能解决我的情况,因为典型的用户代理(Firefox 3.6,IE 8)在发布multipart/form-data时不使用此功能。但是,手工助手应用程序可能需要使用此功能。