我在禁用 iOS App Transport Security 时遇到问题。首先,我正在使用 Visual Studio 在 Windows 10 下进行开发,并且我正在尝试通过我的 Windows 机器上的 remotebuild 在带有 XCode 7.1 的 Mac OSX 上构建应用程序。我正在使用带有cordova的Ionic框架和cordova-ios 3.9.2版
我搜索了很多如何解决我的问题,但没有任何效果。到目前为止,我尝试在 appname/platform/ios/appname/ 中编辑 appname-Info.plist 文件并添加以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>myurl.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
</dict>
</dict>
</dict>
我也试过这个条目:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
两种选择都不起作用。我在我的 Mac 上检查了 Xcode 项目中的 appname-Info.plist 文件,但它不包含 NSAppTransportSecurity 密钥。我尝试在 Xcode 中手动添加它,然后一切正常,但我每次都更改本手册不是一种选择。
所以我也尝试将以下内容添加到 config.xml 中,这也应该将 NSAppTransportSecurity 添加到 appname-Inof.plist
<platform name="ios">
<config-file platform="ios" target="*-Info.plist" parent="NSAppTransportSecurity">
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
</config-file>
这也没有任何效果。
然后我尝试按照本教程使用cordova白名单插件: http ://docs.ionic.io/docs/cordova-whitelist 。首先,我遇到了使用最新白名单版本的问题,因为它不适用于 cordova-ios v 3.9.2,仅适用于 4.0.0 或更高版本。然后我发现,我应该使用白名单版本 1.0.0。首先我可以添加它,因为在 VisualStudio 中,通过 git 存储库添加自定义插件时无法指定版本。我尝试使用以下命令手动添加它:
cordova plugin add cordova-plugin-whitelist@1.0.0
添加插件有效,但插件未在我的项目的 config.xml 中配置。我尝试使用以下行将其添加到那里:
<vs:plugin name="cordova-plugin-whitelist" version="1.0.0" src="https://github.com/apache/cordova-plugin-whitelist.git" />
这也没有奏效。
我尝试了很多东西,现在我有点困惑。如果cordova-ios 3.9.2,白名单到底是什么,我需要当前版本吗?在 plist 文件中创建白名单 NSAppTransportSecurity 密钥?是否有其他解决方案来处理应用程序传输安全?处理它的最佳方法是什么,是否有人知道,为什么所有解决方案都不适合我?
最好的,1ceman