【发布时间】:2016-01-08 15:00:01
【问题描述】:
使用 XCode7/Swift2 并尝试加载网页时,我一直被 App Transport Security (ATS) 阻止 - 原因似乎是 ATS 不适用于 .ninja 网络扩展。
意思是,你可以为domains.com添加一个例外,你可以在webview中访问这个站点。但是,您不能为domains.ninja 添加例外,尽管这是一个有效的网址。我已经对此进行了全面测试。
现在我能够从 somewebsite.ninja 加载内容的唯一方法是,如果我在 Info.plist 文件中完全关闭 ATS(NSAppTransportSecurity > NSAllowsArbitraryLoads > YES),但我知道这不是正确的方法做事。我还担心,当我在完成后将我的应用程序提交到应用程序商店时,这可能会导致问题。
有人知道如何为 .ninja 域添加 ATS 例外吗?
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>domains.com</key>
<dict>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>domains.ninja</key>
<dict>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
以上内容将允许您在 web 视图中加载 domain.com 而不是 domain.ninja,即使除了域名扩展之外键/选项完全相同。
【问题讨论】:
-
您能否显示您在 info.plist 中输入的条目以及您尝试访问的 URL?
-
是的,刚刚编辑了答案。请注意,我只是将 espn.com 用作测试用例。我还使用不同的域名进行了测试,即
somedomain.ninja,结果相同。到目前为止,唯一的方法是完全禁用 ATS -
对我来说 https://www.espn.ninja 无法连接并且 http://espn.ninja 是一个停放的域
-
然后尝试任何其他 .ninja 域,它被停放并不重要。事实上,我应该使用另一个例子。试试这两个域:
http://domains.ninja/和http://domains.com——它们都是有效的站点。以及上面的 espn 网站(即使一个被停放它仍然有效,而且我正在使用一个有效的非停放网站进行测试) -
“我还担心,当我将应用程序提交到应用商店时,这可能会导致问题。”会引起什么问题?任意负载是合法的。这就是它的为。使用它并继续前进。并提交错误报告。这不是你的问题。苹果让自己陷入了困境。处理它是他们的工作。
标签: ios xcode ios9 xcode7 app-transport-security