ios - 使用 "Allow Arbitrary Loads = YES"阻止应用程序传输安全

标签 ios amazon-ec2 ios9.3 app-transport-security

我正在尝试通过 POST 请求访问我在 Amazon EC2 中的一个实例上运行的 Python CGI 脚本,但即使我已经更改了我的 Info.plist 文件以允许任意加载它显示:

error

这是我发出 POST 请求的地方:

let manager = AFHTTPRequestOperationManager()
        let URL = "http://ec2-XX-XX.compute-1.amazonaws.com/cgi-bin/hellopy2.py"
        let params = ["userToken": "XXXXXXXXXXX"]

        manager.POST(URL, parameters: params, success: { (operation, responseObject) -> Void in

这是我的 info.plist 文件:

Info.plist

最佳答案

确保您拥有正确的 Info.plist 文件

首先,确保您放置这些设置的 Info.plist 是您的项目正在使用的那个。您可以通过进入项目设置并搜索 Info.plist 来验证这一点。确保您设置这些值的 Info.plist 文件是您正在构建的构建目标的文件。

Example of Info.plist settings

如果您将项目构建为 IPA,您还可以事后验证。解压缩 IPA,在解压缩的文件夹中,您应该会看到一个 Info.plist 文件。验证您的 ATS 设置是否在该文件中,以确保正在运行的应用程序应使用这些异常。


让设置正确/一致

一旦您验证了这一点,您应该清理您的设置。您使用全局标志来允许任何不安全的流量。这暂时可行,但在 2016 年底之后,您将无法在不向 Apple 提供正当理由的情况下提交到商店,并可能面临拒绝。我建议此时不要使用它,除非这是一个不会通过应用程序商店分发的应用程序(例如企业应用程序)。如果您确实选择使用此标志,请删除异常(exception)域,因为它们是不需要的(您基本上是在说所有域都是异常(exception)并允许 http)。

如果你想正确地做到这一点,只允许与 amazonaws 的不安全连接,你的设置应该如下所示:

Cleaned up App Transport Security Settings without extra entries

如果您有这些设置,并且您的 Info.plist 配置正确,您应该能够在没有 https 的情况下访问任何 amazonaws.com 子域。

关于ios - 使用 "Allow Arbitrary Loads = YES"阻止应用程序传输安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39862980/

相关文章:

iphone - 在非开发人员 iOS 设备上存储控制台输出的最简单方法

iphone - 对齐 UILabel 以 UIView 为中心

linux - 将 Git SSH key 捆绑到私有(private) AMI 中

amazon-ec2 - 如何在没有 Cisco/Juniper 路由器的情况下设置 Amazon VPC 网关?

ios - Xcode 7.3 缺少私有(private)框架

iphone - IOS 应用程序被拒绝 : 2. 23 - 应用程序必须遵循 iOS 数据存储指南

ios - iOS 上蓝牙的设备日志

amazon-web-services - 使用 IAM 账户启动 Spot 实例请求时遇到错误

video - AVPlayer 第七次重新进入画面后无法显示

ios - 一个线程忙于在一个表中写入,而另一个线程从另一个表访问数据