IdHTTp 组件能否不发送 Accept-Encoding 这个报头?

Frank.WU 2009-01-13 05:02:19
如题,能否办到?

HTTPOptions := [];//这样不行!

...全文
308 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccnsa 2011-07-24
  • 打赏
  • 举报
回复
Accept-Encoding 不是必须的。
这个头信息是告诉服务器,客户端支持何种压缩方式,若无此行,就是告诉服务器,客户端不支持压缩,请直接返回文本,别压缩。

在java编程中,模仿浏览器提交了 Accept-Encoding: gzip,deflate,拿到的却是乱码,后来才发现服务器端设置了 gzip 压缩,拿到的是压缩后的数据,而客户端本身有没有解压功能。
去掉 Accept-Encoding: gzip,deflate 后,拿到的就是完整的文本了。

服务端自动根据 Accept-Encoding 选择压缩方式,如果没有Accept-Encoding: gzip,deflate,就直接传输文本。
ccnsa 2011-07-24
  • 打赏
  • 举报
回复
修改 C:\Program Files\Indy 10 for Delphi 7\Source\Protocols\idHttp.pas
屏蔽下面语句
// if IndyPos('identity',Request.AcceptEncoding)=0 then {do not localize}
// begin
// Request.AcceptEncoding := Request.AcceptEncoding + 'identity'; {do not localize}
// end;
重新编译成 idHttp.dcu,再覆盖 C:\Program Files\Indy 10 for Delphi 7\LibD7\idHttp.dcu

就可以了。

Indy强制添加的,所以在自己的程序中是无法去掉的。
Frank.WU 2009-01-14
  • 打赏
  • 举报
回复
换了ICS组件就没这个了,谢谢僵哥的回复!
僵哥 2009-01-13
  • 打赏
  • 举报
回复
Accept-Encoding在HTTP协议当中是有必要的,否则服务器在应答的时候无法对客户端的支持做出判断。
Frank.WU 2009-01-13
  • 打赏
  • 举报
回复
僵哥的意思是:
IdHTTP1.Request.AcceptEncoding := '';//???


这样用抓包工具还是会看到以下:
Accept-Encoding: identity
僵哥 2009-01-13
  • 打赏
  • 举报
回复
IdHTTP1.Request.AcceptEncoding

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧