ホームページ  >  記事  >  バックエンド開発  >  Android アプリが ByetHost サーバーから JSON データではなく HTML データを受信するのはなぜですか?それを修正するにはどうすればよいですか?

Android アプリが ByetHost サーバーから JSON データではなく HTML データを受信するのはなぜですか?それを修正するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-28 03:44:31635ブラウズ

Why is my Android app receiving HTML instead of JSON data from a ByetHost server, and how can I fix it?

ByetHost によるサーバー側 Cookie 検証

問題

Android アプリが JSON を解析していますデータは ByetHost サーバーから送信されますが、代わりに HTML 値を受け取ります。この問題は、以前は正しく機能していた後に発生します。

解決策

ByetHost は、testcookie-nginx-module と呼ばれるボット対策セキュリティ モジュールを実装しました。このモジュールは、2 段階のプロセスを使用して HTTP リクエストを検証します:

  1. 初期リクエスト:

    • モジュールは、次の JavaScript リダイレクトを生成します。 AES キーを含む検証 Cookie。
    • クライアントを実際の JSON URL にリダイレクトします。
  2. 後続のリクエスト:

    • 検証 Cookie は、AES キーを検証し、JSON データへのアクセスを許可するために使用されます。

HTML 値の原因:

Android アプリが ByetHost サーバーにデータをリクエストするとき、必要な検証 Cookie がありません。その結果、サーバーは JavaScript リダイレクトを返し、アプリでは HTML として扱われます。

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

検証 Cookie を取得する:

  1. Chrome などの Web ブラウザを使用して JSON URL に一度アクセスします。
  2. ブラウザの開発者ツールから「__test」Cookie の値をコピーします。

Android アプリに Cookie を設定します:

Android アプリの HTTP リクエストに次のコードを追加します:

<code class="java">httpPost.addHeader("Cookie", "__test=THE_CONTENT_OF_YOUR_COOKIE_HERE; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/");</code>

「__test」を置き換えます=THE_CONTENT_OF_YOUR_COOKIE_HERE" を実際の Cookie 値に置き換えます。

PHP ファイルの例:

<code class="php"><?php
// Database connection
$result = mysqli_query($con, "SELECT * FROM `pj_medionline_mst_stockist` ORDER BY `ID` ASC");

$response = array();
$posts = array();
while ($row = mysqli_fetch_array($result)) {
    $posts[] = array(
        'id' => $row["ID"],
        'stkcode' => $row["stkcode"],
        'stkname' => $row["ComName"],
        'operatorid' => $row["operatorid"],
        'password' => $row["Password"]
    );
}
$response['stokist'] = $posts;
print(json_encode($response));
?></code>

以上がAndroid アプリが ByetHost サーバーから JSON データではなく HTML データを受信するのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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