您好,匿名用户
随意问技术百科期待您的加入

POST请求中包含Range字段是否标准

0 投票

大家好,我们在用POST请求向我们自研的HTTPSVR发送数据,由于数据是分片的,我们在POST的head里面加上了Range字段来告诉server当前上传文件的偏移值。现在的问题是我们的请求被某些代理过滤掉了Range字段导致我们的sevrer拿不到该字段,我查了下RFC,也没见说POST里面不许加Range的,是否标准呢?

用户头像 提问 2012年 12月1日 @ Hades 上等兵 (152 威望)
分享到:

1个回答

0 投票
 
最佳答案

参见HTTP RFC:http://www.w3.org/Protocols/rfc2616/r...

HTTP协议的RFC中明确说了,对PUT方法,接收者不能忽视任何Content-* Header,但POST方法没有明确说。这种用法比较冷门,所以,有的Web Server和Proxy很可能不会实现POST方法的Content-Range支持。

GET方法的Content-Range支持是非常普遍的,各种断点续传的下载软件都是靠这个实现的。

开源项目gears上有一篇proposal是讲"POST/PUT 支持 Content-Range"的,你可以参照一下:http://code.google.com/p/gears/wiki/C...

你们的Web Server是自己写的,不存在不支持这个Header的可能,关键就是中间的各类七层代理(负载均衡、反向代理等)。以HAporxy为例,如果打开了keep-alive选项,HAproxy会对后端的Web Server使用HTTP长连接,End User这边发起1000个HTTP请求,HAproxy可能只向后端Web Server发起50个持久连接,这时候,不要说是Content-Range,其它HTTP头也会丢弃。

所以:
1. 如果你不能控制中间的各类七层代理,最好不要使用HTTP协议没有明确规定且不太常用的HTTP Header,改为在HTTP Body里实现。这么做的优点是兼容性好,缺点是性能差一点(相对写在Header中而言)
2. 如果你很在意性能,且不想改动Content-Range的相关代码(从Header移到到Body处理中去),则要有向中间七层代理服务提需求的能力

用户头像 回复 2012年 12月1日 @ Lucia 上等兵 (416 威望)
选中 2012年 12月1日 @Hades
提一个问题:

相关问题

0 投票
1 回复 37 阅读
用户头像 提问 2013年 11月1日 @ Ziggs 上等兵 (345 威望)
0 投票
1 回复 20 阅读
用户头像 提问 2014年 3月4日 @ Nero 上等兵 (377 威望)
0 投票
1 回复 70 阅读
0 投票
1 回复 33 阅读
0 投票
1 回复 78 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...