gpt4 book ai didi

android - cordova-plugin-whitelist 适用于 Android 但不适用于 iOS (Phonegap Build)

转载 作者:可可西里 更新时间:2023-11-01 03:55:45 25 4
gpt4 key购买 nike

我正在开发一个用 Cordova 封装并使用 Phonegap Build 构建的 JavaScript 应用程序。我们包括 cordova-plugin-whitelist来 self 们构建中的 npm 并添加了 <access origin="*" />到我们的 config.xml 和我们 index.html 中的开放 CSP ( <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> )。该应用程序在 Android 上运行良好,并且可以毫无问题地与我们的服务器通信,但在 iOS 上,所有请求都会立即失败,就好像白名单插件不允许流量通过一样。

我已经尝试了多种不同的构建配置,以防某个特定版本的 Cordova 出现问题,但根本无法使其正常工作。过去我在其他 Phonegap/Cordova 应用程序中遇到过类似的问题,但能够使用白名单插件/CSP/访问规则解决它。

这个问题也很难调试,因为 Safari 开发者工具无法连接到 iOS 设备,我不得不提醒我看到的响应。看起来返回的响应有一个状态代码 0 和一个空主体,我假设这只是意味着无法访问。

最佳答案

您可能需要在 Content-Security-Policy 中设置 connect-src,例如:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://YOUR_HOST">

此外,对于 Xcode 7/iOS 9,如果您不使用 SSL,您将需要调整 ATS 设置以允许连接到非 https 后端:

以下是更改应用信息 .plist 的工作示例:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

(请注意,您还可以将其配置为有选择地允许非 https 连接)。

这里有一个脚本,您可以将其用作 iOS 的预构建 Hook 以自动执行此操作:

#!/bin/bash
echo "Adjusting plist for App Transport Security exception."
val=$(/usr/libexec/plistbuddy -c "add NSAppTransportSecurity:NSAllowsArbitraryLoads bool true" platforms/ios/PROJECTNAME/PROJECTNAME-Info.plist 2>/dev/null) echo "Done"

只需将 PROJECTNAME 替换为您的项目名称即可。

关于android - cordova-plugin-whitelist 适用于 Android 但不适用于 iOS (Phonegap Build),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33130559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com