我正在从事离子cordova项目。该应用程序需要配置为iOS 9版本的App Transport Security Exceptions。
有谁知道如何将以下配置添加到cordova项目配置文件中? (config.xml中)
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
此致
答案 0 :(得分:5)
最简单的解决方案可能是使用插件。看看cordova-plugin-transport-security
cordova plugin add cordova-plugin-transport-security --save
您可以在其plugin.xml文件中看到它如何修改plist值。
<platform name="ios">
<config-file target="*-Info.plist" parent="NSAppTransportSecurity">
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</config-file>
</platform>
答案 1 :(得分:5)
参考Whitelist Guide这应该通过添加
来完成<access origin='*' allows-arbitrary-loads-in-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />
到你的config.xml。
答案 2 :(得分:0)
我总是使用Hook脚本和plistbuddy完成此操作。所以我将它放在hooks文件夹中,确保它被设置为可执行文件权限(755会这样做):
#!/bin/bash
echo "Adjusting plist for App Transport Security exception."
val=$(/usr/libexec/plistbuddy -c "add NSAppTransportSecurity:NSExceptionDomains:DOMAIN_TO_SET_AS_EXCEPTION:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true" platforms/ios/HelloCordova/HelloCordova-Info.plist 2>/dev/null)
echo "Done"
将“DOMAIN_TO_SET_AS_EXCEPTION”替换为您的域名,例如myhost.example.com - 我不喜欢在你需要之前设置所有域名,所以建议使用白名单方法。
然后为了解决这个问题,我将iOS平台部分中的config.xml修改为:
...
<platform name="ios">
<hook type="before_build" src="hooks/ios_ats.sh" />
...
我写了一个blog post来展示这个以及一个关于Github的完整示例项目,从帖子链接到你可以从中获得一个合适的脚本。
答案 3 :(得分:0)
您可以直接在edit-config
中使用config.xml
标签来更新应用程序Info.plist文件中的属性。
这类似于Connor's answer,但允许对应用程序的配置进行更一般的控制。
对于这种特殊情况,您可以包括以下内容(用您的应用名称替换${APP_NAME}
,这并不奇怪):
<edit-config file="${APP_NAME}/${APP_NAME}-Info.plist" target="NSAppTransportSecurity" mode="merge">
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
</dict>
</edit-config>