所以,昨晚发布的iOS新测试版SDK有“应用传输安全”,鼓励开发者使用https而不是http。原则上,这是一个好主意,我已经在我们的登台/生产环境中使用了https。然而,当iOS应用程序连接到我笔记本电脑上运行的web服务时,我在本地开发环境中没有设置https。
从今天早上的一些测试来看,即使您提供http URL, URL加载系统也会决定使用https。有人知道如何禁用这种行为吗——即使只是针对特定的url ?
所以,昨晚发布的iOS新测试版SDK有“应用传输安全”,鼓励开发者使用https而不是http。原则上,这是一个好主意,我已经在我们的登台/生产环境中使用了https。然而,当iOS应用程序连接到我笔记本电脑上运行的web服务时,我在本地开发环境中没有设置https。
从今天早上的一些测试来看,即使您提供http URL, URL加载系统也会决定使用https。有人知道如何禁用这种行为吗——即使只是针对特定的url ?
当前回答
遵循这一点。
我已经在info.plist中添加了一些键来解决它。 我遵循的步骤是:
打开我的项目信息。plist文件 添加了一个名为NSAppTransportSecurity的Key作为字典。 添加了一个名为NSAllowsArbitraryLoads的子键作为布尔值,并将其值设置为YES,如下图所示。
清理项目,现在一切都像以前一样运行良好。
参考链接。
其他回答
编译@adurdin和@User给出的答案
添加关注你的信息。Plist和更改localhost.com与您相应的域名,您可以添加多个域名以及:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<false/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
</plist>
你的信息。Plist必须是这样的:
以下是对我有效的方法:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key><!-- your_remote_server.com / localhost --></key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
</dict>
<!-- add more domain here -->
</dict>
</dict>
我只是想补充这一点来帮助别人,节省一些时间:
如果你正在使用:CFStreamCreatePairWithSocketToHost。确保你的主机与你的。plist中的主机相同,或者如果你有单独的套接字域,就把它添加到那里。
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)/*from .plist*/, (unsigned int)port, &readStream, &writeStream);
希望这对你有帮助。欢呼。:)
作为公认的答案已经提供了所需的信息,有关使用和禁用应用程序传输安全的更多信息,可以找到更多关于此的信息。
对于每域异常,将这些添加到Info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourserver.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>
但是如果我不知道我需要使用的所有不安全域名怎么办? 在Info.plist中使用以下键
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
欲了解更多细节,请点击此链接。
我已经解决为plist文件。
添加一个NSAppTransportSecurity: Dictionary。 添加名为“NSAllowsArbitraryLoads”的子键作为布尔值:YES
遵循这一点。
我已经在info.plist中添加了一些键来解决它。 我遵循的步骤是:
打开我的项目信息。plist文件 添加了一个名为NSAppTransportSecurity的Key作为字典。 添加了一个名为NSAllowsArbitraryLoads的子键作为布尔值,并将其值设置为YES,如下图所示。
清理项目,现在一切都像以前一样运行良好。
参考链接。