传输安全性已阻止明文HTTP


1451

info.plist根据以下错误消息,我需要进行什么设置才能启用HTTP模式?

传输安全性阻止了明文HTTP(http://)资源的加载,因为它不安全。可以通过应用程序的Info.plist文件配置临时异常。

Xcode

假设我的域名是example.com



15
主持人注:该问题已经有36个答案。在添加另一个之前,请确保您的解决方案是新的
马特

5
注意:此处的解决方案建议您关闭ATS(Allow arbitary loads)。不久,这将是不可能的,因为苹果需要ATS (本来年底-截止日期已延长) - developer.apple.com/news/?id=12212016b
的JakubTruhlář


@Jeef为什么要添加iOS 10标签?iOS 10在这方面是否还有其他更改?我觉得它是在iOS9中引入的,并且就iOS版本而言,该标签就足够了
朱利安·克罗尔(JulianKról)

Answers:


468

如果您使用的是Xcode 8.0+和Swift 2.2+甚至是Objective C:

在此处输入图片说明

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>example.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

29
为什么NSAllowsArbitraryLoads设置为true?您颠覆了ATS的目的。另请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。您的软件已列入清单。
jww

6
@jww这是这篇文章的目的。我需要连接以播放音频的站点还没有使用HTTPS,因此我不想等待。
ThinkDigital '18

5
这在iOS 10.0+或MacOS 10.12+中不起作用。实际上是说允许所有任意负载(提及的负载除外)(example.com)。因此,它将与期望的相反。NSAllowsArbirtraryLoads应该在此处设置为false。更多信息:Apple文档
Freek Sanders

1
同意,为什么所有人都对此表示反对?如果设置了例外域,则使用NSAllowsArbitraryLoads没有意义。
thibaut noah

1
NSAllowsArbitraryLoads不必为true,因此必须将其删除。NSExceptionDomains足以仅启用到该域的非安全连接。NSAllowsArbitraryLoads = true将启用与任何域的非安全连接,因此,如果仍将其设置为true,则NSExceptionDomains将变得毫无意义,因为它已经包括所有域了
mister_giga

950

使用NSAppTransportSecurity:

在此处输入图片说明

您必须将info.plist文件中NSAppTransportSecurity词典下的NSAllowsArbitraryLoads键设置为YES

Plist配置


157
让我们知道:这是一种解决方法!每当您在HTTPS上使用HTTP时,都会向用户的设备开放漏洞。当然,在很多情况下这不太可能,但是道德编程是最佳实践。只是说'...-还有,工作+1(出于测试目的)
Jacksonkr,2015年

36
这不是解决方案-这是HACK!要添加单个域“例外”,请参见以下答案:stackoverflow.com/a/32560433/1103584
DiscDev

17
虽然该解决方案容易受到攻击,但它是我在开发期间建议的唯一解决方案。在开发过程中必须输入每个确切的域都是很愚蠢的(特别是如果您使用的是第三方Web服务)。
2015年

6
这些密钥的名称现已更改为“允许任意加载”下的“应用程序传输安全设置”
vishal dharankar 2015年

11
为什么有这么多人反对这种解决方案?这绝对不是黑客!许多应用程序需要与实际的Internet通信,而安全协议并不总是由您控制。例如,能够显示来自其他没有SSL证书的服务器的图像似乎很合理。
奥伦


717

请参阅论坛中的应用程序传输安全性?

同样是在iOS 9和OSX 10.11中配置应用程序传输安全例外的页面。

例如,您可以添加一个特定域,例如:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>example.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>

惰性选项是:

<key>NSAppTransportSecurity</key>
<dict>
  <!--Include to allow all connections (DANGER)-->
  <key>NSAllowsArbitraryLoads</key>
      <true/>
</dict>

注意:

info.plist 是XML文件,因此您可以将此代码或多或少地放置在文件内的任何位置。


1
我该怎么做,我的意思是将代码添加到Info.plist的方式是什么,因为我不知道将代码粘贴到哪里?
lmiguelvargasf 2015年

2
@lmiguelvargasf在纯文本编辑器中打开您的info.plist
Dan Beaulieu

7
我仍然收到错误消息:设置了例外域,并且NSAllowsArbitraryLoads为false。即使将NSAllowsArbitraryLoads设置为true,也会显示错误。这里还有其他人有这个问题吗?
klaevv

3
自2016
Philippe Monnet

3
万一其他人因为对info.plist进行这些简单更改而无法发挥作用。.将更改添加到“项目”>“目标”>“信息”>“自定义iOS目标属性”
BlueGuy 2016年

330

这已经过测试,并且正在iOS 9 GM种子上工作-这是允许特定域使用HTTP而不是HTTPS的配置:

<key>NSAppTransportSecurity</key>
<dict>
      <key>NSAllowsArbitraryLoads</key> 
      <false/>
       <key>NSExceptionDomains</key>
       <dict>
            <key>example.com</key> <!--Include your domain at this line -->
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
            </dict>
       </dict>
</dict>

NSAllowsArbitraryLoads必须为false,因为它禁止所有不安全的连接,但是例外列表允许连接到某些没有HTTPS的域。


7
这应该被标记为答案。经过测试并在iOS 9 GM种子上工作,以允许特定域使用http,而无需采取“偷懒”方式并完全打开您的应用程序。
DiscDev

2
如何将其添加到我的info.plist?
JMStudios.jrichardson

8
好的,我将该条目添加到了info.plist中,但仍然出现此错误-“应用传输安全性由于不安全,阻止了明文HTTP(http://)资源加载。可以通过应用的信息配置临时异常.plist文件。”
KMC 2015年

2
@RomanShapovalov(如果必须使用IP地址),请尝试将.xip.io添加到IP地址的末尾,然后将xip.io添加到您的NSExceptionDomains。见xip.io。我在开发(而不是发布)时直接连接到IP,这对我来说非常有用。
tpankake

2
直到我意识到我在测试项目中将其放在错误的info.plist中之前,它才对我有用。确保将其放在正确的位置!
Chucky

144

这是一个快速的解决方法(但不推荐),可以将其添加到plist中:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

这意味着(根据Apple的文档):

NSAllowsArbitraryLoads
一个布尔值,用于为未在NSExceptionDomains词典中列出的任何域禁用应用程序传输安全性。列出的域使用为该域指定的设置。

默认值为NO要求所有连接都具有默认的App Transport Security行为。

我真的推荐链接:

这有助于我理解原因及其所有含义。

下面的XML(在Info.plist文件中)将:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

禁止对所有页面进行任意调用,但是for PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE允许连接使用HTTP协议。

您可以在上面的XML中添加:

<key>NSIncludesSubdomains</key>
<true/>

如果要允许指定地址的子域的不安全连接。

最好的方法是阻止所有任意负载(设置为false)并添加例外,以仅允许我们知道的地址。

对于有兴趣的读者

2018更新:

苹果不建议您关闭此功能-更多信息可以在207届WWDC 2018中找到,并在安全方面进行了更多说明

由于历史原因和发展阶段而留下原始答案


1
NSAllowsArbitraryLoads必须是false
Sound Blaster

@SoundBlaster在什么情况下以及您在我的否决答复中看到什么错?
朱利安·克罗(JulianKról)2015年

通过添加plist(NSAppTransportSecurity NSAllowsArbitraryLoads),除一个Web服务外,所有Web服务正常工作,一个Web服务在iOS 9中返回内部服务器错误(500),但在iOS8或更高版本中工作正常
amit gupta

@SoundBlaster进行了更改,现在您不应该提出异议了:)
朱利安·克罗(JulianKról)2015年

谢谢,您如何实际添加<key>NSIncludesSubdomains</key> <true/>?每个设置都必须被包围<dict>吗?您如何编辑该死的plist文件?格式是什么?:D谢谢。
特工斑马

116

对于那些想要更多了解为什么发生这种情况的人,除了如何解决它之外,请阅读以下内容。

随着iOS 9的引入,为了提高应用程序和Web服务之间的连接安全性,应用程序及其Web服务之间的安全连接必须遵循最佳实践。最佳实践行为由App Transport Security强制执行以:

  • 防止意外披露,并且
  • 提供安全的默认行为。

App Transport Security技术说明中所述,在与Web服务通信时,App Transport Security现在具有以下要求和行为:

  • 服务器必须至少支持传输层安全性(TLS)协议版本1.2。
  • 连接密码仅限于提供前向保密性的密码(请参阅下面的密码列表)。
  • 证书必须使用SHA256或更好的签名哈希算法进行签名,并使用2048位或更高的RSA密钥或256位或更高的椭圆曲线(ECC)密钥。
  • 无效的证书会导致严重故障并且无法连接。

换句话说,您的Web服务请求应:a。)使用HTTPS,b。)使用具有向前保密性的TLS v1.2进行加密。

但是,如其他文章所述,您可以通过在应用程序的中指定不安全的域来覆盖App Transport Security中的此新行为Info.plist


要覆盖,您需要将NSAppTransportSecurity> NSExceptionDomains字典属性添加到中Info.plist。接下来,您将Web服务的域添加到NSExceptionDomains字典中。

例如,如果我要绕过主机www.yourwebservicehost.com上的Web服务的“应用程序传输安全性”行为,则可以执行以下操作:

  1. 在Xcode中打开您的应用。

  2. Info.plist在Project Navigator中找到文件,然后单击“鼠标右键”,然后选择“ 打开方式 > 源代码”菜单选项。属性列表文件将出现在右窗格中。

  3. 将以下属性块放入主属性字典中(在第一个之下<dict>)。


<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.example.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

如果您需要为其他域提供例外,则可以在下方添加另一个字典属性NSExceptionDomains

要查找有关上述键的更多信息,请阅读已经提到的technote


1
这在我的两个应用程序中都有效,但在第三个应用程序中却不起作用。其他人是否遇到过使用上述修复程序并仍然收到相同错误消息的情况?(是的,我更新了字典以使用我的API域,而不是代码中的那个API域)
helloB

最好 !苹果使用
YannSteph

这适用于Cordova / Phonegap / Ionic应用程序编辑文件./platforms/ios/<project>/<project>-Info.plist,该文件具有NSAllowsArbitraryLoads=false多个TLS / HTTP / HTTPS组合服务的例外域。最初使用,NSAllowsArbitraryLoads=true然后进行调整,通过反复试验对规则进行故障排除,以符合准则并提交批准。注意config.xml <access origin=.../>语句部分填充了此文件,但是当前需要通过直接编辑或通过XCode进行调整以使细节正确。
jimmont

<access origin="*"/>(在config.xml中)设置NSAllowsArbitraryLoads=true(针对Cordova / Phonegap / hybrid应用程序
jimmont,2015年

为什么NSExceptionAllowsInsecureHTTPLoads设置为true?您颠覆了ATS的目的。另请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。您的软件已列入清单。
jww

67

我不喜欢直接编辑plist。您可以使用GUI轻松将其添加到plist中:

  • 单击左侧导航器中的Info.plist。
  • 现在,在主要区域中更改数据:

    • 在最后一行添加+
    • 输入组的名称:App Transport安全设置
    • 右键单击该组,然后选择 Add Row
    • 输入允许任意载荷
    • 将右侧的值设置为YES

例


需要说明的是:如果“允许任意负载”为是,并且有“异常域”,则允许的负载将限制为“异常域”中的负载。那是对的吗?

如果要发布应用程序,这是一种安全的方法吗?
Lamour

否。通过允许任意负载,您的应用程序可以自由连接到任何域。从安全角度考虑,您应该控制和限制应用程序连接到哪个域/网站,以避免意外的网络使用。
猛禽

大多数应用仅路由到已知服务器。这由开发人员控制。因此,安全问题是已知的。
文森特

为什么NSAllowsArbitraryLoads设置为YES?您颠覆了ATS的目的。另请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。您的软件已列入清单。
jww

25

苹果文件1

苹果文件2

有两种解决方案:

解决方案1:

  1. Info.plist文件中添加键为' NSAppTransportSecurity' 的字典
  2. 用键在字典内添加另一个元素 'Allow Arbitrary Loads'

Plist 结构应如下图所示。

解决方案1

解决方案2:

  1. Info.plist文件中添加键为' NSAppTransportSecurity' 的字典
  2. 使用键' NSExceptionDomains' 在字典中添加另一个元素
  3. 使用'MyDomainName.com'NSDictionary类型的键添加元素
  4. 添加元素,其键NSIncludesSubdomains的类型Boolean和值设置为YES
  5. 添加元素,其键NSTemporaryExceptionAllowsInsecureHTTPLoads的类型Boolean和值设置为YES

Plist 结构应如下图所示。

解决方案2

首选解决方案2,因为它仅允许选择的域,而解决方案1允许所有不安全的HTTP连接。


为什么NSAllowsArbitraryLoads设置为YES?您颠覆了ATS的目的。另请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。您的软件已列入清单。
jww

20

传输安全性在iOS 9.0或更高版本上可用。尝试在应用程序内调用WS时,可能会出现以下警告:

由于应用程序传输安全性不安全,它阻止了明文HTTP(http://)资源加载。可以通过应用程序的Info.plist文件配置临时异常。

将以下内容添加到您的Info.plist中将禁用ATS:

<key>NSAppTransportSecurity</key>
<dict>
     <key>NSAllowsArbitraryLoads</key><true/>
</dict>

1
NSAllowsArbitraryLoads必须为false,如果为true,则它允许所有不安全的连接
Thiago Arreguy 2015年

通过在plist中添加所有工作正常的Web服务,除了一个Web服务,一个Web服务在iOS 9中返回内部服务器错误(500),但在iOS8或更高版本中工作正常
amit gupta

1
在商店接受吗?
Vrashabh Irde 2015年

非常糟糕的建议;请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。考虑到是否存在建议的处理方式的问题,不需要像这样的“我也是”答案。
jww

15

开发实例

这是一个plist的屏幕截图,该plist保持ATS完整(=安全),但允许通过localhost 而不是HTTPS进行到localhost的连接。它可以在Xcode 7.1.1中使用。

在此处输入图片说明


是否有任何方法可以在react-native中确保本地主机的安全(即使用HTTPS),以便我们不必使用默认NSExceptionAllowsInsecureHTTPLoads - YES配置?
milkersarac

13

转到您的Info.plist

  1. 右键单击空白区域,然后单击添加行
  2. 在其下将密钥名称写为NSAppTransportSecurity
  3. 选择例外域,为此添加新项目
  4. 写下您需要访问的域名
  5. 将域类型从字符串更改为字典,添加一个新项目
  6. NSTemporaryExceptionAllowsInsecureHTTPLoads,它将是一个布尔值,具有真实值。 看图片以正确跟随

1
为什么NSAllowsArbitraryLoads设置为true?您颠覆了ATS的目的。另请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。您的软件已列入清单。
jww

13

根据苹果公司的说法,除非您有充分的理由,否则通常禁用ATS会导致应用程序被拒绝。即使这样,您也应该为可以安全访问的域添加例外。

Apple有一个出色的工具,可以告诉您要使用的确切设置:在“终端”中,输入

/usr/bin/nscurl --ats-diagnostics --verbose https://www.example.com/whatever

然后nscurl将检查此请求是否失败,然后尝试各种设置,并确切告诉您哪个请求通过了,该怎么做。例如,对于我访问的某些第三方URL,此命令告诉我该词典通过了:

{
    NSExceptionDomains = {
        "www.example.com" = {
            NSExceptionRequiresForwardSecrecy = false;
        };
    };
}

要区分您自己的站点和不受控制的第三方站点,请使用例如密钥NSThirdPartyExceptionRequiresForwardSecrecy。


1
它是在实际测试应用程序之前进行检查的强大工具。省时间。但是需要阅读任何资源以了解此命令的输出。
damithH

1
有趣的工具。就我而言,它夸大了事情。它列出了包括在内的三个键NSExceptionAllowsInsecureHTTPLoads = true;,但事实证明并不需要。
克里斯·普林斯

11

本技术说明所述,找出要使用的设置可以自动执行:

/usr/bin/nscurl --ats-diagnostics --verbose https://your-domain.com

显然,您确实需要OS X 10.11(El Capitan)。
ecotax 2015年

10

注意:您的plist中的例外域应为小写。

示例:您在“设置”->“共享”下将计算机命名为“ MyAwesomeMacbook”;您的服务器(出于测试目的)在MyAwesomeMacbook.local:3000上运行,并且您的应用需要向http://MyAwesomeMacbook.local:3000 / files发送请求...,您的plist中需要指定“ myawesomemacbook”。本地”作为例外域。

-

您的info.plist将包含...

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>myawesomemacbook.local</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSExceptionAllowsInsecureHTTPLoads</key>
      <true/>
    </dict>
  </dict>
</dict>

9

采用:

PList屏幕截图可以更好地理解

在类型为Dictionary的plist文件中添加一个新项NSAppTransportSecurity,然后在类型为Boolean的字典中添加子项NSAllowsArbitraryLoads,并设置bool值为YES。这对我有用。


1
NSAllowsArbitraryLoads必须为false,如果为true,则它允许所有不安全的连接
Thiago Arreguy 2015年

通过在plist中添加所有工作正常的Web服务,除了一个Web服务,一个Web服务 在iOS 9中返回内部服务器错误(500),但在iOS8或更高版本中工作正常@ThiagoArreguy
amit gupta

非常糟糕的建议;请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。考虑到是否存在建议的处理方式的问题,不需要像这样的“我也是”答案。
jww

我知道这是一个坏建议,但这只是暂时在开发模式下的解决方案。苹果为我们提供了灵活性,如果它有那么糟糕,他们将不允许这样做。
Tejinder

9

在2015-09-25(Xcode在2015-09-18更新之后):

我使用了一种非惰性方法,但是没有用。以下是我的尝试。

第一,

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.xxx.yyy.zzz</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

其次,

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.xxx.yyy.zzz</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

最后,我使用了惰性方法:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

可能有些不安全,但是我找不到其他解决方案。


为什么NSAllowsArbitraryLoads设置为true?您颠覆了ATS的目的。另请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。您的软件已列入清单。
jww

9

在swift 4和xocde 10中,将NSAllowsArbitraryLoads更改为允许任意负载。因此它将看起来像这样:

<key>App Transport Security Settings</key>
<dict>
     <key>Allow Arbitrary Loads</key><true/>
</dict>

6

也许值得一提的是如何到达那里...

Info.plist是Main.storyboard或viewController.swift下的文件之一。

第一次单击时,它通常采用表格格式,因此,右键单击该文件并“打开为”源代码,然后在末尾添加以下代码,即:

 <key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>

复制粘贴上面的代码

 "</dict>
</plist>"

到最后。


为什么NSAllowsArbitraryLoads设置为true?您颠覆了ATS的目的。另请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。您的软件已列入清单。
jww

5

Xcode 7.1的更新,面临问题27.10.15:

Info.plist中的新值是“应用程序传输安全设置”。从那里,此字典应包含:

  • 允许任意载荷=是
  • 例外域(在此处插入您的http域)

4

对于那些来这里寻找WKWebView始终为白色且不加载任何内容的原因的人(正是如此处所述,如何使WKWebView快速运行并用于macOS App):

如果以上所有火箭技术都不适合您,请检查以下内容:沙箱设置

沙箱设置]

我是Swift和Cocoa的新手,但是在编程方面经验丰富,我花了大约20个小时来找到这种解决方案。数十个时髦的iOS教程和Apple主题演讲中都没有-没有提及这个小复选框。


哦,天哪,非常感谢!您为我节省了同样的20小时搜索!
Brecht Machiels '18

2
在目标(Xcode 9.4.1)的“功能”部分中看不到该部分
shim

3

默认情况下,iOS仅允许HTTPS API。由于HTTP不安全,因此您必须禁用应用程序传输安全性。有两种禁用ATS的方法:-

1.在项目info.plist中添加源代码,并在root标记中添加以下代码。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

2.使用项目信息。

在左窗格的项目上单击项目,选择项目作为目标并选择信息选项卡。您必须在以下结构中添加字典。

在此处输入图片说明




0

对于Cordova,如果要将其添加到ios.json中,请执行以下操作:

"NSAppTransportSecurity": [
   {
      "xml": "<dict><key>NSAllowsArbitraryLoads</key><true /></dict>"
   }
]

它应该位于以下内容中:

"*-Info.plist": {
   "parents": {
   }
}

只是config.xml中的<access origin =“ *” />不起作用。不知道两者是否都是必要的,但是ios.json解决方案为我达成了协议。
zeusstl

为什么NSAllowsArbitraryLoads设置为true?您颠覆了ATS的目的。另请参阅世界上最危险的代码:在非浏览器软件中验证SSL证书。您的软件已列入清单。
jww

-1

就像许多人指出的那样,这是iOS 9.0附带的功能问题。他们添加了一个称为“应用程序传输安全性”的东西,当它破坏了我的应用程序时,我也很生气。

您可以使用.plist文件中NSAppTransportSecurity词典下的NSAllowsArbitraryLoads键(是)将其包扎,但是最终您将需要重新编写形成URL的代码以形成HTTPS://前缀。

Apple已在iOS 9.0中重写了NSUrlConnection类。您可以在NSURLConnection中阅读有关它的信息。

否则,您可能必须退出iOS 9.0,直到您有时间实施正确的解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.