我正在build立到IIS Web服务器的HTTP连接,并发送一个POST请求,其中包含使用transfer-encoding编码的数据:分块。 当我这样做时,IIS只是closures连接,没有错误信息或状态码。 根据HTTP 1.1规范 ,
所有HTTP / 1.1应用程序必须能够接收和解码“分块”的传输编码
所以我不明白为什么它是(a)不处理该编码和(b)它不发回状态码。 如果我更改发送Content-Length而不是transfer-encoding的请求,则查询成功,但这并非总是可行。
当我对Apache尝试同样的事情时,我得到“411长度要求”的状态和一个消息说“分块传输编码禁止”。
用django处理HTTP分块编码
Rails何时以“传输编码”与“内容长度”进行响应?
启用Nginx块传输编码
Web服务器 – 我应该何时使用分块传输编码?
如何通过Nginx进行分块的请求
为什么这些服务器不支持这种编码?
Nginx代理http PUT分块到apache
我的理解是分块编码只能在HTTP响应中使用。 分块的请求体将具有与1.0服务器不兼容的属性,并且在任何情况下,在用户代理已经发送请求之前,没有办法知道服务器是1.0服务器。
但是我同意从文档中不清楚。
看看你的客户。
IIS和Apache都使用分块传输编码来支持POST请求。 您可以使用curl实用工具来验证这一点:
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设置config -section:httpCompression
– [name ='gzip']。staticCompressionLevel:9 – [name ='gzip']。dynamicCompressionLevel:4
救了我的一天…希望能帮助像我这样的人!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。