ByetHost によるサーバー側 Cookie 検証
問題
Android アプリが JSON を解析していますデータは ByetHost サーバーから送信されますが、代わりに HTML 値を受け取ります。この問題は、以前は正しく機能していた後に発生します。
解決策
ByetHost は、testcookie-nginx-module と呼ばれるボット対策セキュリティ モジュールを実装しました。このモジュールは、2 段階のプロセスを使用して HTTP リクエストを検証します:
初期リクエスト:
後続のリクエスト:
HTML 値の原因:
Android アプリが ByetHost サーバーにデータをリクエストするとき、必要な検証 Cookie がありません。その結果、サーバーは JavaScript リダイレクトを返し、アプリでは HTML として扱われます。
Android アプリのソリューション:
検証 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 サイトの他の関連記事を参照してください。