【问题标题】:Angularjs http.jsonp iOS9 404Angularjs http.jsonp iOS9 404
【发布时间】:2015-12-15 21:15:03
【问题描述】:

我有一个 Cordova Angularjs 应用程序,它正在从我的服务器获取一些 JSON。它适用于 iOS 8,但是当我“升级”到 iOS 9 时,我现在从我的服务器上什么也得不到。服务器没有更改,如果我导航到我的 url,我可以看到 JSON 响应。

我把它缩小到我的 $http.jsonp() 方法。尝试检索 JSON 时出现 404 错误。完全相同的代码可以正常工作,并在 iOS 8 设备上获取 JSON。

还有其他人对此和 iOS 9 有疑问并想出了更多吗?这绝对看起来像是与 Apple 相关的问题...

【问题讨论】:

  • 我不得不将我的xcode项目上的info.plist文件编辑为<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key><true/> </dict>你没有说这是一个Xcode相关的项目,但是如果有可能需要添加一些标题你的项目使它与 iOS9 一起工作。
  • 是的 xcode 项目。我添加了它,它现在可以工作了。将其添加为答案,我会接受。 @area28 你能解释一下为什么这会在 iOS9 中有所不同吗?

标签: ios angularjs cordova http jsonp


【解决方案1】:

将此添加到您的 info.plist 文件中。

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

来自this page

应用传输安全 (ATS) 在应用与其后端之间的安全连接中强制执行最佳实践。 ATS 可防止意外泄露,提供安全的默认行为,并且易于采用;它在 iOS 9 和 OS X v10.11 中也默认开启。无论您是创建新应用还是更新现有应用,都应尽快采用 ATS。

如果您正在开发新应用,则应仅使用 HTTPS。如果您有一个现有的应用程序,您现在应该尽可能多地使用 HTTPS,并制定一个计划以尽快迁移您的应用程序的其余部分。此外,您通过更高级别 API 进行的通信需要使用具有前向保密性的 TLS 1.2 版进行加密。如果您尝试建立不符合此要求的连接,则会引发错误。如果您的应用需要向不安全的域发出请求,您必须在应用的 Info.plist 文件中指定该域。

这在 iOS9 中已默认开启。他们建议尽可能使用 https 进行开发。要解决这个问题,您需要此答案中的先前代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2012-08-17
    • 2014-04-23
    • 2015-08-27
    • 1970-01-01
    相关资源
    最近更新 更多