cordova 10 存在与 allowedList 相关的 CORS 问题

Mah*_*ani 7 whitelist cors cordova

我正在为 Android 开发一个 cordova 应用程序,在切换到 cordova 10 后,出现与 CORS 问题相关的错误,由于弃用通知,我删除了 cordova-plugin-whitelist :

随着允许列表功能现已集成到 Cordova Android(10.x 及更高版本)的核心中,不再需要此插件。

我的 config.xml 文件包含这一行:

<access origin="*" />
Run Code Online (Sandbox Code Playgroud)

在切换到 cordova 10 之前一切都很好,这些天我在谷歌上搜索但没有结果,tnx。

Fra*_*tin 14

cordova-android 10.x 从之前的 file:/// 协议转移到通过 https:// 协议(WebAssetLoader)提供服务文件。这意味着您需要更改服务器上的 CORS 设置,以允许您的移动应用程序在其下运行的主机名。默认为 https://localhost,但您可以使用<preference name="hostname" value="localhost" />设置更改主机名(该协议不可配置。

如果您不更改 Cordova 中的主机名,则需要使用 Access-Control-Allow-Origin 标头将 https://localhost 添加为服务器配置中允许的来源。

  • AndroidInsecureFileModeEnabled 设置为 true 会让您返回 file:/// 方案,就像 cordova-android 10 之前一样。不存在安全问题,由于 file:/// 原点的 CORS 问题而进行了更改。 (3认同)
  • tnx 对于您的回复,“主机名”效果很好,但是当我更改值时,我必须将“AndroidInsecureFileModeEnabled”设置设置为“true”,否则在应用程序启动时我会收到此错误“应用程序错误 ERR_CONNECTION_REFUSED ...”,将“AndroidInsecureFileModeEnabled”设置为“true”是否存在任何安全问题? (2认同)
  • @trebor Cordova 博客是了解更改内容及其原因的良好来源。https://cordova.apache.org/announcements/2021/07/20/cordova-android-10.0.0.html 博客条目中提到了 WebAssetLoader,该条目还链接到 PR https://github.com/apache /cordova-android/pull/1137 。最后,CORS 问题来自于 Android Cordova 应用程序现在在 `https://localhost` 上运行(除非更改),因此您的后端服务器需要允许 `https://localhost` (或您更改的任何内容)它使用主机名首选项)。 (2认同)

小智 13

我刚刚将我的项目从 Cordova 9 迁移到 Cordova 10.1.1,现在针对 Android 12 (API 31),以及 Firebase for OAuth(根据文档)。

构建进展顺利,但我在err_connection_refused尝试通过 OAuth 登录时开始收到错误。解决此问题所需的唯一方法是将首选项添加name="AndroidInsecureFileModeEnabled" value="true"config.xml.

  • 如果缺乏解释,这是一个有效的答案。将 `&lt;preference name="AndroidInsecureFileModeEnabled" value="true" /&gt;` 添加到 `&lt;platform name="android"&gt;` 元素将恢复为通过 `file://` 协议提供服务的旧行为,从而解析CORS 错误。 (5认同)
  • 我更喜欢这个答案,因为我不想将 localhost 添加到我的服务器 (2认同)