我提出的HTTP连接到IIS Web服务器,并发送具有使用传输编码中编码的数据的POST请求:分块。当我这样做,只是IIS关闭连接,没有错误消息或状态码。根据 HTTP 1.1规范

  

所有HTTP / 1.1应用程序必须能够接收和解码所述“分块”传输编码

所以我不明白为什么这是(一)不处理该编码和(b)它没有发回一个状态代码。如果我更改请求发送的内容长度,而不是传输编码,查询成功,但是这并不总是可行的。

当我尝试对阿帕奇同样的事情,我得到一个“411需要长度”状态和一条消息说“分块传输编码禁止入内”。

为什么这些服务器不支持这种编码?

有帮助吗?

解决方案

我的理解是分块编码只能在HTTP响应中使用。甲分块请求机构将具有作为不相容与1.0服务器的属性,并且在任何情况下,就没有用户代理知道该服务器是一个1.0服务器,直到它已经发送的请求的方式。

但我同意,目前还不清楚从文档。

其他提示

看看你的客户。

使用传输编码分块

两个IIS与Apache的支持POST请求。可以使用href="http://curl.haxx.se/" rel="noreferrer">卷曲效用中

curl <upload-url> --form "upfile=@<local_file>" --header "Transfer-Encoding: chunked"

验证转印是使用分块的Wireshark

它是双向的。试着上传图像2MB ++来的photobucket并记录。其上载上传分块到他们的apache的服务器。

我唯一的猜测是,他们没有实现它的安全顾虑。在天真的解决方案,将很容易成立了由启动多个分块传输,永远不会结束DOS攻击。而一个复杂的解决方案,它可以解释的DOS攻击可能是不值得的。

当然,我不能为Apache或IIS可言,您可以直接虽然到Apache团队联系:的 http://httpd.apache.org/bug_report.html

我同意MarkR我一直认为分块编码只能用来作为响应,但文档肯定使得它听起来像它可以在一个请求或响应中使用。

此命令来营救我!

  

C:\ Windows \ System32下\ INETSRV \ Appcmd.exe的设置配置-section:httpCompression结果      - [名称= '的gzip'] staticCompressionLevel:9 - [名称= '的gzip'] dynamicCompressionLevel:4

救了我的一天......希望它可以帮助我这样的人!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top