如何使用Fiddler进行gzip POST?

时间:2012-12-04 22:08:12

标签: curl gzip fiddler

Fiddler当然是摇滚!

所以我需要构建我的请求(一些头文件,一个大的xml有效负载),然后做一个gzip的http POST(头文件表示gzip压缩,我粘贴的xml有效负载得到gzip压缩...就像规格一样说)。

如何?

当我使用"规则" gzip的选项,请求出现(据我所知)不被修改。看起来就像没有gzip一样。

目前正在使用fiddler 2.3.9.2

CURL参考: fiddler中的期望目标可以通过几个步骤完成:

1)gzip payload.xml(使用7-Zip或其他可以创建gzip文件的工具)。调用文件:payload.xml.gz

2)使用此语法

curl --header "Content-Type: application/xml" --header "Content-Encoding: gzip" --data-binary "@payload.xml.gz" https://<yourendpoint> --insecure --trace-ascii -

TIA!

1 个答案:

答案 0 :(得分:4)

首先,请升级到当前版本的Fiddler。

其次,重要的是要理解Fiddler的大多数可见压缩功能都与响应的压缩有关,而不是与请求有关。这是因为许多/大多数服务器不支持请求压缩,因为浏览器没有任何方法可以先验地知道它是否会受到支持,因此浏览器不会压缩请求。同样,支持压缩请求会使服务器受到ZIP炸弹攻击。

现在,话虽如此,一些服务器确实支持压缩请求,Fiddler可以生成这些请求。第一个问题是“你如何产生你的请求?”

如果您正在使用Composer,请执行以下操作:点击规则&gt;自定义规则。滚动到OnBeforeRequest。添加以下行:

static function OnBeforeRequest(oSession: Session) {        
       if (oSession.oRequest.headers.ExistsAndContains("Content-Encoding", "doGZIP"))
        {
          oSession.oRequest.headers.Remove("Content-Encoding");
          oSession.utilGZIPRequest();
        }

现在,任何包含Content-Encoding:doGZIP标头的请求都会在传输到服务器之前由Fiddler自动压缩。