Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS从HTTP加载图像_Ios_Swift_App Transport Security - Fatal编程技术网

iOS从HTTP加载图像

iOS从HTTP加载图像,ios,swift,app-transport-security,Ios,Swift,App Transport Security,可以从任何网站下载图像吗 我的问题是应用程序传输安全性,因为不可能在整个互联网上使用域异常,也不安全(可能被苹果禁止)绕过ATS HTTPS工作正常,但如果用户想从HTTP保存图像怎么办?这并不是禁止的,但在某个时候,苹果可能会要求您提供理由,说明为什么您使用ATS例外来降低应用程序的安全性 要允许HTTP连接到单个域(听起来像是您需要的),只需将以下内容添加到Info.plist <key>NSAppTransportSecurity</key> <dict>

可以从任何网站下载图像吗

我的问题是
应用程序传输安全性
,因为不可能在整个互联网上使用域异常,也不安全(可能被苹果禁止)绕过ATS


HTTPS工作正常,但如果用户想从HTTP保存图像怎么办?

这并不是禁止的,但在某个时候,苹果可能会要求您提供理由,说明为什么您使用ATS例外来降低应用程序的安全性

要允许HTTP连接到单个域(听起来像是您需要的),只需将以下内容添加到Info.plist

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>
NSAppTransportSecurity
NSExceptionDomains
yourdomain.com
n包括多个域
N异常低安全Http负载
N第三方异常低安全Http负载

关键是将异常限制在尽可能狭窄的范围内。在这种情况下,您将限制为仅允许与承载映像的服务器域的不安全(HTTP)连接

仅禁用ATS。禁用ATS不是禁止的。如果您的用例涉及从任意基于HTTP的站点下载图像,那么这样做实际上是您唯一的选择。在这里,单个域没有用处,因为例如,如果我的应用程序是照片拼贴,它将需要访问任何域。如果您事先不知道这些域(没有一个预定义的域列表,你可以从中提取图像,你必须完全禁用ATS。如果苹果问你为什么要禁用所有域的ATS,请准备好回答。我认为你可能有一个合理的理由,但只有苹果知道当他们开始执行规则时,他们会允许什么。)嘿,我在过去几年一直在谈论这个问题。我想没有解决办法。这完全取决于苹果的意愿和当前的规则。上面的代码可能会帮助某些人,所以我将把它作为一个答案。我不确定你所说的“没有解决办法”是什么意思。苹果有文件证明的解决方案是禁用ATS,并为您不能限制每个域的ATS例外提供理由。对此,您有答案,所以应该足够了。