ByetHost 伺服器使用JSON 字串傳遞HTML 值「檢查您的瀏覽器」
問題
問題 嘗試時在Android 上解析JSON 字串,而是傳回HTML 值。這個突然的問題會影響 ByetHost 伺服器上託管的所有頁面,而其他伺服器上託管的頁面可以正常運作。
解決方案
- 該問題的出現是由於 ByetHost 伺服器實現了testcookie-nginx-module 安全反機器人措施。此模組執行兩步驟驗證程序:
-
對於第一個 HTTP 請求,模組會傳回 JavaScript 片段而不是預期的 JSON 回應。此程式碼片段會在用戶端產生一個包含 AES 金鑰的驗證 cookie。
使用產生的 cookie 的後續 HTTP 請求允許存取所需的 JSON 回應。
- 步驟解決Android 應用程式的問題
- 從Web 瀏覽器取得Cookie 金鑰:
-
- 訪問ByetHost URL在網頁瀏覽器中。
檢查瀏覽器的 cookie 設定並記下「__test」cookie。
- 從「__test」複製「內容」、「路徑」和「過期」的值" cookie.
在Android 應用程式中設定Cookie:
<code class="java">httpPost.addHeader("Cookie", "__test=THE_CONTENT_OF_YOUR_COOKIE_HERE; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/");</code>
登入後複製
在您應用的HTTP 請求代碼中加入header下麵包含「__test」cookie:
將「THE_CONTENT_OF_YOUR_COOKIE_HERE」獲取為「步驟」值。透過這些更改,Android 應用程式將包含「__test" cookie 在其HTTP 請求中,允許它從ByetHost 伺服器存取所需的JSON 回應。
以上是為什麼我的 Android 應用程式從 ByetHost 伺服器接收 HTML 而不是 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!