LoginSignup
1
3

More than 5 years have passed since last update.

Webサーバから謎のバイナリが返ってくる場合の対処法

Posted at

事象

PHPで、JSON文字列を返すAPI用のテストを書いたけどなぜか動かない。
そこで画面にレスポンスを表示してみたら・・・

image.png

_人人人人人人人人人人_
> 突然のキリル文字 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄
キリル文字:Й ←こんなの

検証

確か、バイナリデータをコンソールに表示しようとすると、こんな文字化けっぽい現象を起こしていたはず・・・
しかし、なぜバイナリになるのか分からない。
デバッグしてもデバッグしても、分からない。

ふとレスポンスヘッダを眺めてみるとこんな一文を発見。

Content-Encoding: gzip

_人人人人人人人_
> 突然のgzip <
 ̄Y^Y^Y^Y^Y^Y ̄

検証2

さらに、リクエストヘッダ(自分でテストに書いた)も眺めてみると、こんな一文を発見。

Accept-Encoding:gzip, deflate, sdch

なるほどなるほど。
gzipで寄越していいよってリクエストをした結果、サーバ側でgzipで返してあげたってことだね。
調べてみると、そういう仕様があるらしい。
参考:Apacheのmod_deflateでコンテンツを圧縮してサイトを高速化する方法

結論

リクエストヘッダから
Accept-Encoding:gzip, deflate, sdch
を削除したら、文字列で結果を受け取れました。

mod_deflateを導入した覚えもないんだけど、テスト環境だしまぁいっか。

反省

  • ブラウザのログからのコピペをリクエストヘッダに設定していた。よく見よう。
  • デバッグの前に、今分かる情報をよく見よう。
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3