サーバー環境が原因でPressSyncでログイン出来ないケースについて

ユーザー様から色々とバグレポートを頂きまして、コツコツと対応していたので、この問題はかなり解決が進んだ状態だと思っています。

ユーザー様からのご連絡でWordpressの環境に依存してログイン出来ないケースがある事が一つわかりましたので、ご紹介させて頂きます。

ログイン出来ない原因の一つ(サーバーの返すHTTPヘッダーが壊れている)

ログイン出来ない、というよりは、このサブタイトルの状況になると「全てのAPI呼び出しでエラーが発生する」という事態を招きます。


というわけで、いきなりログイン出来ないという状況に見舞われます。

WordPressのXMLRPC APIを呼び出すと、応答としてXML形式のデータが返ってきます。


このXMLデータを解析してPressSyncはアプリ内にデータを保持したり、処理を行ったりしています。
APIからの応答データはWebメソッドを介して呼び出しているので、Webブラウザで特定のページを開いた時と同じく、HTTP通信の応答としてデータを受け取ります。


応答データ内のHTTPヘッダに不正な値が設定されている場合、PressSyncではXMLを解析出来ず、APIの呼び出しに失敗する事があります。

HTTPヘッダーの何が壊れているのか?

HTTPヘッダー内には「content-length」という項目があります。
この項目の意味は、コンテント(PressSyncの場合はAPIの戻り値として期待するXML)の長さが設定されるのですが、使われているApacheや、PHPのバージョンによっては、正しい長さが設定されない事があるようです。

この「content-length」が実際よりも1バイトでも短く設定されている場合、XMLファイルとしては「>」といった終端を示す文字が無くなってしまうため、XMLファイルとして成立しなくなり、PressSyncが応答データ不正と判断します。

「content-length」を信じない、という対応も可能なのですが、これを行うと別のところで更に深刻な問題を生み出しそうな為、アプリとしてはこのケースを想定しない方針です。

もしログイン時にXMLのParse系エラーメッセージが出ている場合は、この問題の可能性が非常に高いです。


お使いのサーバーの返すHTTPヘッダーの妥当性を、ご確認頂ければと思います。

以上

via PressSync

投稿者:

aroooy

I am a systems engineer freelance. I love digital devices such as smart phones. I make the iOS app by using the spare time.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください