如题,能否办到?    HTTPOptions := [];//这样不行!

解决方案 »

  1.   

    僵哥的意思是:
    IdHTTP1.Request.AcceptEncoding := '';//???这样用抓包工具还是会看到以下:
    Accept-Encoding: identity
      

  2.   

    Accept-Encoding在HTTP协议当中是有必要的,否则服务器在应答的时候无法对客户端的支持做出判断。
      

  3.   

    换了ICS组件就没这个了,谢谢僵哥的回复!
      

  4.   

    修改 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强制添加的,所以在自己的程序中是无法去掉的。
      

  5.   

    Accept-Encoding 不是必须的。
    这个头信息是告诉服务器,客户端支持何种压缩方式,若无此行,就是告诉服务器,客户端不支持压缩,请直接返回文本,别压缩。在java编程中,模仿浏览器提交了 Accept-Encoding: gzip,deflate,拿到的却是乱码,后来才发现服务器端设置了 gzip 压缩,拿到的是压缩后的数据,而客户端本身有没有解压功能。
    去掉 Accept-Encoding: gzip,deflate 后,拿到的就是完整的文本了。服务端自动根据 Accept-Encoding 选择压缩方式,如果没有Accept-Encoding: gzip,deflate,就直接传输文本。