使用离子和cordova的iOS App Transport Security问题

时间:2015-11-09 14:46:29

标签: ios cordova ionic nsapptransportsecurity

我在禁用iOS App Transport Security时遇到问题。 首先,我正在使用Visual Studio在Windows 10下开发,我正在尝试使用XCode 7.1在我的Windows机器上通过remotebuild在Mac OSX上构建应用程序。 我正在使用带有cordova和cordova-ios版本3.9.2的Ionic框架

我搜索了很多如何解决我的问题,但没有任何效果。到目前为止,我试图在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密钥? 还有其他灵魂来处理App Transport Security吗? 什么是处理它的最佳方式,是否有人有一个想法,为什么所有的解决方案都不适合我?

最佳, 1ceman

2 个答案:

答案 0 :(得分:2)

在使用visual studio开发cordova应用程序时,我遇到了与ios 9.x相同的问题。这与IOS版本完全相关。解决这个问题的最简单方法是使用插件。看看{{3}}。这解决了运输安全问题。

安装

npm上的最新发布版本(使用Cordova CLI&gt; = 5.0.0)

cordova plugin add cordova-plugin-transport-security

GitHub的最新版本

cordova plugin add https://github.com/leecrossley/cordova-plugin-transport-security.git

注意: 平台

仅适用于iOS(9+)。

答案 1 :(得分:1)

我可以使用https://github.com/robertklein/cordova-ios-security.git提供的ios-security插件解决问题。 使用此插件后,以下密钥将添加到INfo.plist文件中:

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