3/13 – 14にかけて、graph.facebook.comがアップデートされたようで、レスポンスのStatus-LineにReason-Phraseが含まれなくなっていました。
これまで、
HTTP/1.1 200 Ok
だったのが、「Ok」の部分がなくなって
HTTP/1.1 200
が返ってくるようになています。
なお、RFC2616では、
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
と定義されているので、Reason-Phraseは必須のはずなんですがどうなんでしょ。
と、ここでCakePHPのHttpSocket
を利用してGraph APIにアクセスしている場合に問題が発生します。
Status-Lineは、RFC2616の定義を前提として実装されていたため、Graph APIからのHttpバージョン、ステータスコードが取得できず、isOk()
メソッドなどが正常に機能しなくなります。
というのに気付いたのが、先々日でしたが既に対応されていました。
changed regexp for response code by samokspv · Pull Request #3016 · cakephp/cakephp
問題のある方は、masterブランチのHttpSocketResponse.php
へ差し替えれば大丈夫です。
(次のリリースである2.4.7以降は修正されたものが提供されます。
Facebook側には一応バグレポートで出してみました。
Graph API not provide Reason-Phrase in response Status-Line
対応するのかな。
2014.08.14 > 慎重な検討の結果、対応されませんでした。( ´・ω・`)