在Windows CE上,我目前处于从头开始实现简单Web服务器的情况。该服务器的主要用途是采用一对一的USB RNDIS连接。服务器由设备上运行的托管应用程序托管。
因此,我们将POST请求处理与交付的网页紧密集成。而不是处理完整请求并存储太大的POST数据,而是通过接收其标题及其内容流来通知当前页面(由请求标识)有关任何POSTed多部分。这个解决方案有效,并且每个人都很开心。
现在,问题是:应用程序的Web界面中的一个页面允许上载软件更新,其大小可以是11到40 MB。在处理此POST请求时,我们有各种验证步骤,例如基于会话cookie的权限系统。我们知道,由于所述会话cookie,是否允许客户端在处理完所有标头后立即上传软件更新。我们有什么方法可以避免读入(并丢弃)所有POST内容,以便用户立即获得反馈?
我们的第一个想法是在标头处理之后返回一个正确的错误消息响应,然后关闭连接,但浏览器(正确地,似乎)抱怨对方过早地重置。
答案 0 :(得分:0)
浏览器希望发生完整的传输。为了给用户提供更好的响应能力的方法可能是在页面上使用AJAX调用 - 因此页面应该进行AJAX调用以异步地将实际上载发布到另一个页面,而不是接收数据的页面。我自己,我会用jQuery做这个,但你可以把脚本放在一起,没有任何框架,可以很容易地做到这一点。
答案 1 :(得分:0)
因为我最近仔细研究了相关的RFC:
HTTP 1.1看到包含针对该类场景的附加请求标头
Expect: 100-Continue
这告诉服务器检查请求标题并返回“好,你现在可以开始向我发送实际内容”或“抱歉,无论你打算给我发帖,我都不能处理它“ - 响应(更精确的技术性,见the HTTP 1.1 RFC)
但是,这并不能解决我的问题,因为典型的用户代理(Firefox 3.6,IE 8)在POST多部分/表单数据时不使用此功能。但是,手工种植的助手应用程序可能希望使用此功能。