【问题标题】:Problems with iOS App Transport Security using ionic and cordova使用 ionic 和 cordova 的 iOS App Transport Security 问题
【发布时间】:2016-02-10 05:59:10
【问题描述】:

我在禁用 iOS App Transport Security 时遇到问题。 首先,我正在使用 Visual Studio 在 Windows 10 下进行开发,并且我正在尝试通过我的 Windows 机器上的 remotebuild 在带有 XCode 7.1 的 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 密钥? 是否有其他解决方案来处理应用程序传输安全? 处理它的最佳方法是什么?有人知道为什么所有解决方案都不适合我吗?

最好, 1ceman

【问题讨论】:

    标签: ios cordova ionic nsapptransportsecurity


    【解决方案1】:

    我可以通过使用https://github.com/robertklein/cordova-ios-security.git 提供的 ios-security 插件来解决这个问题。 使用此插件后,INInfo.plist 文件中添加了以下键:

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

    【讨论】:

      【解决方案2】:

      我在使用 Visual Studio 开发 Cordova 应用程序时遇到了与 ios 9.x 相同的问题。这与IOS版本完全相关。解决此问题的最简单方法是使用插件。看看cordova-plugin-transport-security。这解决了传输安全问题。

      安装

      在 npm 上发布的最新版本(使用 Cordova CLI >= 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+)。

      【讨论】:

      • 知道如何让它在 iOS 10 上运行吗?构建到 iOS 10 设备时,我继续收到错误消息。
      猜你喜欢
      • 2015-11-30
      • 1970-01-01
      • 2018-04-28
      • 2017-01-17
      • 2018-06-18
      • 2017-03-15
      • 2015-11-26
      • 2021-04-07
      • 2018-12-24
      相关资源
      最近更新 更多