苹果在使用Open SSL时对其应用程序传输安全性进行了一些更改,但我无法使其在iOS
上运行。
“App Transport Security是一项功能,可提高
应用程序和Web服务之间的连接。该功能包括
符合最佳做法的默认连接要求
安全连接。应用程序可以覆盖此默认行为并转向
运输安全。传输安全性在iOS 9.0或更高版本中可用
以及OS X v10.11和更高版本。”
尝试连接到我们的服务器时,出现以下响应错误:
“发生了SSL错误,无法建立与服务器的安全连接。”
然后,我找到了this tutorial,发现我们需要做的就是将IdSSLOpenSSLHeaders_Static
单元包括在项目的use语句之一中。
我确实将单元以及libcrypto.a
和libssl.a.
库都添加到了项目中,但到目前为止,我遇到了相同的响应错误。
我可能做错了什么?
最佳答案
要禁用 ATS ,您需要另外从this official embarcadero documentation执行以下步骤:
打开您的 Info.plist 并添加以下行:
<key> NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
这将为应用程序使用的所有 HTTP通信禁用Apple的App Transport Security功能,例如,如果您使用
TWebBrowser
或Project Indy的HTTP
组件。每次完成部署后,您项目的
Info.plist
文件都是重新生成的。您需要将文件保存到其他位置,例如项目目录。 (请注意,32位和64位版本略有不同)。在新保存的文件中进行更改,然后转到 Deployment Manager (项目->部署)。确保正确设置了配置,并取消选中默认的Info.plist 。
添加新的自定义版本和,确保将“远程名称”设置为“Info.plist”(区分大小写)。对64位和32位部署都执行此操作。