私はcurlを使用してウェブサイトから出力を取得し、html出力で一連の文字列操作を実行するbashスクリプトを作成しました。問題は、出力をgzippedに戻しているサイトに対して実行したときです。ブラウザでサイトに行っても問題ありません。これはHTMLを返すので、私は返されたデータがgzipで圧縮されて知っているカールを使用するときにgzippedページを正しく扱うには?
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=utf-8
X-Powered-By: PHP/5.2.17
Last-Modified: Sat, 03 Dec 2011 00:07:57 GMT
ETag: "6c38e1154f32dbd9ba211db8ad189b27"
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: must-revalidate
Content-Encoding: gzip
Content-Length: 7796
Date: Sat, 03 Dec 2011 00:46:22 GMT
X-Varnish: 1509870407 1509810501
Age: 504
Via: 1.1 varnish
Connection: keep-alive
X-Cache-Svr: p2137050.pubip.peer1.net
X-Cache: HIT
X-Cache-Hits: 425
:
私は手でカール実行すると、私はgzip圧縮された出力を得る:
$ curl "http://example.com"
は、ここでその特定のサイトからヘッダです
$ curl "http://example.com" | gunzip
出力がgunzipでパイプ処理されないようにするには、スクリプトの作業が必要です他のサイトではそのままですが、gzipを通るとその機能が損なわれます。私は
- を試してみた何
検索stackoverflow
すべてが空になった
アイデア?あなたが--compressed
フラグを設定した場合
美しい!チャンピオンのように動作します。ありがとうございました。 – BryanH
+1最後に4時間の検索は - 圧縮されています。どうも! – Eugene
これはカールバグのように見えます。なぜなら、レスポンスに基づいてデコードを開始する必要があります(gzipをサポートしているため)。 HTTP 1.1を引用する場合: "要求にAccept-Encodingフィールドがない場合、サーバーはクライアントがコンテンツコーディングを受け入れると仮定してもよい(MAY)。しかし、サーバーはそのような場合にはコンテンツをエンコードしてはならないと言います。 –