近頃版/another blog@hatena/Wiki/BBS
< 収束点 | TRPGの了解点 >
他人担当の仕事が通信回りでハマって数日手が止まっていたようで、なんとなくヘルプしろということになる。
モノはS!アプリ。症状は、
_もちろんこういうときにはパケットキャプチャだ。もともと端末と本来のサーバの間にリバースプロキシを挟んでいるのでこういうときは楽。プロキシの上でパケットキャプチャしてやれば通信の内容はおおむね見える。tcpdump -X tcp and port 80
で通信内容を見てやると、端末→プロキシ→サーバ→プロキシ→端末、という順番でいかにも正しく流れていた。ということは端末がなんらかの理由で受け取ったレスポンスを破棄しているということか。
そこで着目したのはリクエストヘッダのAccept: 。ちなみにレスポンスはtext/tsvを返している。
さっき取ったdumpではAcceptにどんな文字が並んでるかわかりにくいので一度dumpという名前のファイルに取りこんでから、
cut -b 59- dump | perl -npe 'chomp(); ' | perl -ne 'print join("\n",split(/,/,$_))'
とかやって各行のASCIIダンプ部だけをつなげたものをカンマで改行させてAcceptヘッダの内容の一覧を得る。
で、その一覧には見事にtext/tsvは含まれていない。
ここでリバースプロキシをさせてるApacheでヘッダいじれないだろうか、などと一瞬思ったが、結局はサーバ担当の人に「とりあえずMIME型をtext/tsvから変えてみて」とお願いを出すという(俺が)楽な方法に落ち着く。しばらくして「変えたよー」と連絡が来たので実機でアクセス。通信成功。