[在Swift中使用重定向URL的ATS策略问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[在Swift中使用重定向URL的ATS策略问题相关的知识,希望对你有一定的参考价值。
例如,我正在使用此link加载链接。尽管该链接是http链接,但它将被重定向到https链接。它可以在浏览器中使用。但是,一旦我让我的ios应用程序加载资源,就会显示“由于应用程序传输安全性策略要求使用安全连接,因此无法加载该资源。”
我正在使用this library加载图片。 Swift不支持加载https资源吗?我可以想到ATS会阻止与服务器的连接,因此甚至无法接收重定向。
我对此表示感谢。
基督徒
转到info.plist
添加称为App Transport Security Settings
的术语。
并在其下添加Allow Arbitrary Loads
您可以按照以下步骤解决该错误:
转到项目目标的
info.plist
文件添加了一个名为
App Transport Security Settings
的键[添加了一个名为
Allow Arbitrary Loads
的子项作为布尔值,并将其值设置为YES,如下图所示。
或其他方式
右键单击info.plist
-> Open As
-> Source Code
添加此,
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
虽然您当然可以使用Kishan和Johnson提供的解决方案来禁用整个ATS,但是如果您知道要加载的http资源的域,则可以有更好的选择。有关为什么最好完全禁用ATS的详细信息,请参见this post。
更好的选择是:
如果您知道http资源总会给您重定向到相同的https://网址,为什么不在代码中简单地使用https://网址。如果重定向是动态的,那么这将不起作用,但是如果您的代码正在尝试加载http://www.example.com/resource,并且始终将其重定向到https://www.example.com/resource,为什么不直接将代码更改为https版本。
仅对需要允许非https连接的域禁用ATS。这样,您可以只为不支持https的域允许http连接,从而更好地保护应用程序用户。您在info.plist中的ATS设置看起来应该像这样:
- [且仅当您的URL由不受控制的数据驱动时(即那些URL中的域可以是任何东西),您将需要禁用所有ATS,Apple最终可能希望您提供禁用的理由它。最初,他们将使所有禁用ATS的应用程序都经过附加的证明要求流程,但是最近没有提及。这应该是不得已的方法。
老实说,看看您的示例UR
以上是关于[在Swift中使用重定向URL的ATS策略问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在完美的框架中取消/删除使用服务器端 swift 重定向客户端