亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Cordova - Android 上的 XHR 請求在模擬器中工作,但在手機上不工作

Cordova - Android 上的 XHR 請求在模擬器中工作,但在手機上不工作

catspeake 2023-05-17 14:53:00
所以我有一個現有的應用程序已經在應用程序商店上架了很長一段時間,截至 3 天前,我收到更多支持查詢,說我的應用程序無法連接到我的服務。現在,它終于在我的 Android 設備上發生了——一切都適用于 iOS,適用于模擬器上的 Android——但在現實世界中卻一無所獲。我已經盡我所能地使用 Cordova 進行逐步調試,它很好地通過了白名單測試。我的第一個 XHR 請求工作正常,但后續請求總是失敗,直到我完全關閉應用程序并重新打開。我正在使用[email protected] 我也試過[email protected]我的Content-Security-Policy長相是這樣的<meta http-equiv="Content-Security-Policy" content="default-src * 'self' gap:; img-src http://*.my-site.com.au https://*.my-site.com.au https://*.my-site.com http://*.my-site.com https://*.googleusercontent.com http://*.googleapis.com  https://google.com https://*.google.com https://*.googleapis.com https://*.gstatic.com 'self' data:; style-src http://*.googleapis.com https://*.googleapis.com 'self' 'unsafe-inline'; script-src 'self' https://*.googleapis.com http://*.googleapis.com http://maps.google.com http://*.gstatic.com https://*.gstatic.com https://maps.google.com 'unsafe-inline' 'unsafe-eval'">我的科爾多瓦配置有<allow-navigation href="*" /><allow-navigation href="http://*/*" /><allow-navigation href="https://*/*" />我試過添加/刪除/替換上面/每個組合<access origin="*" />但沒有運氣。我的 XHR 響應總是如下所示xhr.responseUrl = "http://my-site.com/?d=12343902i49"xhr.status = 0xhr.responseText = ""我已經盡可能地在 Cordova 插件中逐步調試了 XHR 請求,通過逐步調試Whitelist.java但一切都返回正常并且它成功地進入了行// If we don't need to special-case the request, let the browser load it.return null;功能的WebResourceResponse shouldInterceptRequest(WebView view, String url)在org.apache.cordova.engine.SystemWebViewClient.java
查看完整描述

4 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

如果降低 targetSDK,問題就會消失,這可能usesCleartextTraffic是 Nidhin Josehp 提到的問題。當目標為 SDK 28 或更高版本時,它只會影響 Android 8 或更新版本的設備。


您可以將AndroidManifest.xml其添加到config.xml


<platform name="android">

  <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">

      <application android:usesCleartextTraffic="true" />

  </edit-config>

</platform>

您可能需要將小部件標簽更改config.xml為如下所示:


<widget id="com.your.app.id" version="1.0.0"

xmlns="http://www.w3.org/ns/widgets" 

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:cdv="http://cordova.apache.org/ns/1.0">

(加法是xmlns:android="http://schemas.android.com/apk/res/android")


查看完整回答
反對 回復 2023-05-17
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

嘗試添加android:usesCleartextTraffic="true"到<application>或AndroidManifest.xml如下使用config.xml


<platform name="android">

  <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">

      <application android:usesCleartextTraffic="true" />

  </edit-config>

</platform>

android:usesCleartextTraffic指示應用是否打算使用明文網絡流量,例如明文 HTTP。針對 API 級別 27 或更低級別的應用程序的默認值為“true”。以 API 級別 28 或更高級別為目標的應用默認為“false”。更多信息


明文是任何未加密或打算加密的傳輸或存儲信息。當應用程序使用明文網絡流量(例如 HTTP)與服務器通信時,它可能會增加竊聽和篡改內容的風險,這就是為什么在最新的 Android 設備中,它被默認設置為false。


查看完整回答
反對 回復 2023-05-17
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

我要跳,我發誓。

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="26" />

將 targetSdkVersion 從 28 更改為 26。有效。但這將是一場噩夢。

http://img1.sycdn.imooc.com/64647a090001364406320115.jpg



查看完整回答
反對 回復 2023-05-17
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

這是指由 Chrome 76 中引入的錯誤引起的與 CORS 相關的問題(基于相同版本的 WebKit 的 WebViews 受到影響也)。Chrome 76 于 2019 年 8 月開始推出。如果受影響的應用程序重新啟動但隨機返回,問題通常會消失。

根據工單,該問題已在這幾天推出的 Chrome 76.0.3809.111 中得到修復。

在您的模擬器上,您可能使用的是舊版本的 Chrome,這可能是問題沒有出現在那里的原因。如果您比較受影響和未受影響的設備,發現只有運行版本 >=76.0和 <的 Chrome 的設備76.0.3809.111顯示癥狀,您可能找到了問題的原因。

如果是這種情況,您至少有以下選擇:

  • 等待 Chrome 的固定版本推出(許多受影響的手機可能已經出現這種情況)。

  • 如果您控制著服務器,則可以將file://來源添加到那里的允許來源列表中,這就是我們所做的。不過,您必須仔細考慮安全隱患。

順便說一句,在重新啟動應用程序后,問題通常會消失,這使得調試變得困難。我們發現,它可以通過卸載并重新安裝受影響的應用程序來重現。


查看完整回答
反對 回復 2023-05-17
  • 4 回答
  • 0 關注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號