Xcode 7.1 beta 2- 禁用 ATS
Posted
技术标签:
【中文标题】Xcode 7.1 beta 2- 禁用 ATS【英文标题】:Xcode 7.1 beta 2- Disable ATS 【发布时间】:2015-12-29 18:37:05 【问题描述】:嘿,我在最后一天左右绞尽脑汁试图禁用 ATS,但我知道这也很糟糕,但我目前只在内部开发应用程序。我在网上尝试了很多建议都无济于事,最新的尝试如下 info.plist。我不知道该怎么办?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
</dict>
</plist>
调试控制台错误打印
error=Optional(Error Domain=NSURLErrorDomain Code=-1022 "资源 无法加载,因为应用程序传输安全策略需要 使用安全连接。” UserInfo=NSUnderlyingError=0x7f9670e85620 错误 域=kCFErrorDomainCFNetwork 代码=-1022 "(null)", NSErrorFailingURLStringKey=http://localhost/sfc/manualorder.php, NSErrorFailingURLKey=http://localhost/sfc/manualorder.php, NSLocalizedDescription=资源无法加载,因为 应用传输安全策略需要使用安全的 连接。)
【问题讨论】:
我不会打扰异常域,我会完全关闭 ATS。从理论上讲,这是个好主意,但实际上仍然有很多 http 服务。我认为苹果在 ATS 方面走得太远了。阻止不安全的密码和错误的 TLS 版本是好的,但简单地禁止 HTTP 意味着我不得不在我的几个应用程序中关闭 ATS,因为我不知道我的用户将要连接到的服务器 您好 Paul,我完全同意您的看法,因此尝试将其关闭并尝试了许多解决方案,但似乎都不适用于 xcode 7.1 beta 2。Nicolas S 的方式建议应该有效,但似乎根本没有。 您使用的 Xcode 版本无关紧要。这将取决于 ios 版本。您使用的是 9.1 测试版吗?确保您正在编辑正确的 plist @Paulw11 我希望不会。 iOS 9.0 是模拟器上的版本,iPhone 上是 9.0.2。据我所知,我只有一个 info.plist 我刚刚下载了 Xcode 7.1 beta 2 并加载了一个禁用 ATS 的现有应用程序,它运行良好。我正在使用NSAllowsArbitraryLoads
键
【参考方案1】:
如果要禁用 ATS,只需将其添加到 Info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
当您完成应用程序的工作后,您可以重新启用它并将您的域列入白名单。
像这样,第一个包括所有子域,第二个不包括:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>maindomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>other.domain.net</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
如果您在模拟器上进行测试,您可能需要添加一个步骤,即清理项目并重置模拟器的内容和设置,然后再次构建并运行。
【讨论】:
首先感谢您的回复,我尝试了您的最佳建议,但对我不起作用,我正在运行 Xcode 7.1 Beta 2,但我会再试一次以再次确认。 更新**再次尝试了您的最佳建议,并且确实无法正常工作。 以防万一,您是否从设备中删除了应用程序,然后清理、构建和运行? 是的!这样做了,还重置了模拟器。现在可以了,谢谢。 @VaishalPatel 太棒了!我已经在答案上添加了一个注释,以供进一步通知,如果你得到它的工作,请选择一个正确的答案,这样问题就结束了:)以上是关于Xcode 7.1 beta 2- 禁用 ATS的主要内容,如果未能解决你的问题,请参考以下文章
MR_importFromObject 方法在 XCode 7.1 beta (Swiftui 2.0) 中不起作用
找不到开发者磁盘映像 - Xcode 7.1 beta 和 iOS 9.2
XCode 5.1 Beta 4 无法识别 iOS 7.1 Beta 4 测试设备
如何在 Xcode 6.0 Beta 中运行 iOS 7.1 模拟器?