所以,昨晚发布的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,如下图所示。
清理项目,现在一切都像以前一样运行良好。
参考链接。
其他回答
遵循这一点。
我已经在info.plist中添加了一些键来解决它。 我遵循的步骤是:
打开我的项目信息。plist文件 添加了一个名为NSAppTransportSecurity的Key作为字典。 添加了一个名为NSAllowsArbitraryLoads的子键作为布尔值,并将其值设置为YES,如下图所示。
清理项目,现在一切都像以前一样运行良好。
参考链接。
以下是对我有效的方法:
<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);
希望这对你有帮助。欢呼。:)
上面的配置不适合我。我尝试了很多组合键,这一个工作得很好:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>mydomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
如果你只是想禁用本地开发服务器的应用程序传输策略,那么以下解决方案可以很好地工作。它是有用的,当你不能,或它是不切实际的,设置HTTPS(例如,当使用谷歌应用程序引擎开发服务器)。
正如其他人所说,ATP绝对不应该在生产应用中被关闭。
1)使用不同的plist进行调试
复制你的Plist文件和NSAllowsArbitraryLoads。使用这个Plist进行调试。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
2)排除本地服务器
或者,您可以使用单个plist文件并排除特定的服务器。然而,它看起来不像你可以排除IP 4地址,所以你可能需要使用服务器名(在系统首选项->共享中找到,或在您的本地DNS中配置)。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>server.local</key>
<dict/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
我已经解决为plist文件。
添加一个NSAppTransportSecurity: Dictionary。 添加名为“NSAllowsArbitraryLoads”的子键作为布尔值:YES