在 Swift 中使用重定向 url 时出现 ATS 政策问题

ATS policy issue when using a redirect url in Swift

我正在使用这个 link 来加载 link。虽然 link 是一个 http link 它将被重定向到一个 https link。它在浏览器中工作。 但是,一旦我让 iOS 应用程序加载资源,它就会显示 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.".

我正在使用this library加载图片。不支持Swift加载https资源吗?我可以想到 ATS 会阻止与服务器的连接,因此甚至无法接收重定向。

如果对此有任何想法,我将不胜感激。

基督教徒

转到 info.plist 添加一个名为 App Transport Security Settings 的术语。

然后在下面添加 Allow Arbitrary Loads

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

更好的选择是:

  1. 如果您知道 http 资源总是会将您重定向到同一个 https:// url,为什么不简单地使用 https:// url 在你的代码中。如果重定向是动态的,这将不起作用,但如果您的代码试图加载 http://www.example.com/resource and that always redirects to https://www.example.com/resource,为什么不直接更改您的代码以转到 https 版本。

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

  1. 当且仅当您的 url 由您无法控制的数据驱动时(即那些 url 中的域可以是任何东西),您将需要禁用所有ATS,Apple 最终可能希望您提供禁用它的理由。最初他们打算让所有禁用 ATS 的应用程序通过额外的理由请求流程,但他们最近没有提到这一点。这应该是最后的手段。

老实说,看看你的例子 UR