javascript - Enyo ajax 请求在移动版 Safari 7 中失败,在其他地方有效

标签 javascript ios ajax safari enyo

我有一个可以发出跨域 Ajax 请求的 Web 应用程序。除了运行 Safari 7 的 iOS 设备(iPad、iPhone)之外,几乎所有环境中的请求都没有问题。在这些设备上,请求失败。它适用于最新的桌面 Safari 以及移动 Safari 5;问题仅出在移动版 Safari 7(也许是 6;我无权访问其中一个进行测试)。

该应用程序首先向源站点(使用 http 协议(protocol))发出 GET 请求,该请求工作正常。然后它向另一个站点(已为 CORS 正确配置)发出 https POST 请求。这是失败的请求。当请求失败并且服务器日志表明没有请求到达时,Safari 控制台中不会显示任何内容。

还有一个可能相关也可能不相关的细节:两个请求的顺序由单个用户操作触发。

有人知道这里发生了什么吗?

编辑 这个问题显然与 Enyo 有关。我创建了 this fiddle这说明了问题。如果您使用的是 Mobile Safari 7 并选择 enyo.Ajax 作为发出请求的工具,它将失败。直接使用 XMLHttpRequest 对象对相同 URL 的相同请求将成功。 (服务器端脚本简单地回显请求 header 。它还添加了

Access-Control-Allow-Origin: *

响应。)

最佳答案

看起来这与我们为 iOS 所做的修复有关,以防止缓存不可缓存的请求。此修复已更新为仅适用于 2.3.0 中的 iOS 6:https://github.com/enyojs/enyo/commit/73ade2a9dd68deb2f4a4db548c45e2c27104632f

根据修复中的评论,您可以使用 header 属性指定具有缓存控制的对象:null,除非您计划升级到 2.3.0。 :)

关于javascript - Enyo ajax 请求在移动版 Safari 7 中失败,在其他地方有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21126639/

相关文章:

ios - Xcode错误无效的图像路径-CFBundleIconFiles 144x144、152x152、76x76和120x120

iphone - 为什么 viewDidAppear/viewWillAppear 不会在嵌套结构中被调用?

javascript - 预加载图像并不总是出现

javascript - 如何在 jQuery 中进行计算并打印值?

iphone - 静态 iOS 库为设备而不是模拟器构建

javascript - 如何重置图像源中的变量?

javascript - 使用 firebase 调用时如何在 forEach 内使用异步调用

Javascript,通过函数的条件变量

javascript - 防止 JQuery .HTML 在显示之前覆盖以前的 .HTML

javascript - 如果将 addEventListener 放在 head 部分而不是 body 中,则 addEventListener 不起作用