为什么不支持IIS块传输编码?
-
19-08-2019 - |
题
我提出的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">卷曲效用中
验证转印是使用分块的Wireshark curl <upload-url> --form "upfile=@<local_file>" --header "Transfer-Encoding: chunked"
它是双向的。试着上传图像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
救了我的一天......希望它可以帮助我这样的人!