2

提琴手,当然,岩石!

所以我需要构建我的请求(一些标头,一个大的 xml 有效负载),并执行一个 gzip 压缩的 http POST(标头指示 gzip 压缩,并且我粘贴的 xml 有效负载被 gzip 压缩......就像规范说的那样)。

如何?

当我使用 gzip 的“规则”选项时,请求出现(据我所知)不被修改。看起来与未压缩时相同。

当前使用提琴手 2.3.9.2

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

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 -

蒂亚!

4

1 回答 1

4

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

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

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

如果您使用 Composer,请执行以下操作:单击规则 > 自定义规则。滚动到 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 自动压缩,然后再传输到服务器。

于 2012-12-05T22:26:23.100 回答