[在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

另一答案

您可以按照以下步骤解决该错误:

  1. 转到项目目标的info.plist文件

  2. 添加了一个名为App Transport Security Settings的键

  3. [添加了一个名为Allow Arbitrary Loads的子项作为布尔值,并将其值设置为YES,如下图所示。

enter image description here

或其他方式

右键单击info.plist-> Open As-> Source Code

添加此,

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
另一答案

虽然您当然可以使用Kishan和Johnson提供的解决方案来禁用整个ATS,但是如果您知道要加载的http资源的域,则可以有更好的选择。有关为什么最好完全禁用ATS的详细信息,请参见this post

更好的选择是:

  1. 如果您知道http资源总会给您重定向到相同的https://网址,为什么不在代码中简单地使用https://网址。如果重定向是动态的,那么这将不起作用,但是如果您的代码正在尝试加载http://www.example.com/resource,并且始终将其重定向到https://www.example.com/resource,为什么不直接将代码更改为https版本。

  2. 仅对需要允许非https连接的域禁用ATS。这样,您可以只为不支持https的域允许http连接,从而更好地保护应用程序用户。您在info.plist中的ATS设置看起来应该像这样:

Info.plist settings for domain specific ATS settings

  1. [且仅当您的URL由不受控制的数据驱动时(即那些URL中的域可以是任何东西),您将需要禁用所有ATS,Apple最终可能希望您提供禁用的理由它。最初,他们将使所有禁用ATS的应用程序都经过附加的证明要求流程,但是最近没有提及。这应该是不得已的方法。

ATS settings for disabling ATS entirely

老实说,看看您的示例UR

以上是关于[在Swift中使用重定向URL的ATS策略问题的主要内容,如果未能解决你的问题,请参考以下文章

Web 策略代理未重定向到 OpenAM URl

Google GTMAppAuth 重定向网址

python 爬网页 遇到重定向怎么处理

如何在完美的框架中取消/删除使用服务器端 swift 重定向客户端

没有 http 或 https 的 iOS 应用程序的 LinkedIn OAuth2.0 重定向 URL

重定向被 CORS 阻止