ホームページ  >  記事  >  バックエンド開発  >  Android アプリで ByetHost の testcookie-nginx-module が JSON 応答をブロックする問題を修正する方法

Android アプリで ByetHost の testcookie-nginx-module が JSON 応答をブロックする問題を修正する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 15:17:30950ブラウズ

How to Fix ByetHost's testcookie-nginx-module Blocking JSON Responses in Android Apps?

ByetHost サーバーが JSON 文字列を含む HTML 値を返す

問題

JSON 文字列を Android に解析しようとすると、代わりに HTML 値が渡されます。以前はコードは正常に動作していましたが、PHP ファイルを使用してデータベースを取得するときに突然クラッシュし始めました。

確認すると、HTML 値が logcat に記録されていました:

<html><body><h2>Checking your browser..</h2><script...

原因

主な問題は、ByetHost が testcookie-nginx-module という名前の単純なセキュリティ対策モジュールを実装していることです。

解決策

testcookie-nginx-module は 2 つのステップを実行します。 validation:

  1. 最初の HTTP リクエストでは、予期された JSON ではなく JavaScript が返されます。このスクリプトはクライアント (通常は Web ブラウザ) で実行され、AES キーを含む検証 Cookie を生成します。
  2. スクリプトは検証 Cookie をドキュメントに追加し、実際にアクセスしたい URL にリダイレクトします。 testcookie-nginx-module は cookie AES キーを検証し、JSON データで応答する URL にリクエストをヒットさせます。

Android アプリ用のソリューション

でこの検証をバイパスするにはAndroid の場合は、次の手順に従います:

  1. Web ブラウザから Cookie キーを取得します:

    • Google Chrome または別のブラウザを使用します。
    • Web サイトにアクセスし、Cookie を許可します。
    • ブラウザの設定を開き、[コンテンツ設定] -> に移動します。 「すべての Cookie とサイト データ」。
    • Web サイト名を検索します (例: "byethost")。
    • __test という名前の Cookie を見つけて、コンテンツ、パス、有効期限の値をコピーします。
  2. Android アプリに Cookie を設定します。

    • HTTP リクエストを行うコード内で、次のヘッダーを追加します:

      <code class="java">httpPost.addHeader("Cookie", "__test=<content-of-your-cookie>; expires=<expires>; path=<path>");

      以上がAndroid アプリで ByetHost の testcookie-nginx-module が JSON 応答をブロックする問題を修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。