我正在开发一个包含在Cordova中并使用Phonegap Build构建的 JavaScript应用程序.我们在构建中包含来自npm的cordova-plugin-whitelist并添加了 access origin =“*”/到我们的config.xml和一个开放的CSP( met
我已经尝试了许多不同的构建配置,以防特定版本的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的预构建钩子自动执行:
#!/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替换为项目名称即可.