【发布时间】:2012-02-28 13:17:50
【问题描述】:
我正在使用最新版本的 jQuery 1.7.1 进行跨域 Ajax 调用。带有 JSONP 响应。
我已经对它进行了广泛的测试: Win XP 和 Win 7 上的 Safari、Chrome、Opera、Firefox、IE6 IE7 IE8 IE9(在兼容模式下和非兼容模式下)都可以完美运行。永远不会在多次测试中失败。所有这些都使用启用 JavaScript 和 Cookie 的标准默认设置。
在生产中,调用很少会失败,但我有数百个用户中有几个。可能是 50 或 100 分之一。我无法理解这一点,因为在所有情况下:
用户在使用 jQuery 进行非跨域 ajax 调用时没有问题。 (即非跨域调用有效,因此它们必须启用 JavaScript 并且可以支持 ajax)。
用户只遇到了使用 jQuery 进行跨域 ajax 调用的问题。即使经过多次尝试。 IE。用户要么有问题,要么没有,它不会失败然后工作或工作然后失败。只有一个或另一个。
-
以下是受影响用户的用户代理字符串示例:
Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;Trident/5.0;FunWebProducts)
Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0;GTB7.2;.NET CLR 2.0.50727;.NET CLR 3.5.30729)
Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0; CPNTDF;ibrytetoolbar_playbryte;.NET4.0C)
好像只影响IE,其他浏览器没遇到过问题。
如果他们使用不同的浏览器,问题就会消失,我告诉他们安装 Chrome。
问题不可能是连接、计算机或基于操作系统的问题,因为更改浏览器有效。
我只能排除一定是只能在IE上找到的设置。有人遇到过这个问题吗?有谁知道哪个 IE 设置可能会阻止带有 JSONP 响应的跨域 Ajax 调用。
这不可能是通常的 AJAX/JSONP/跨域问题,因为当浏览器设置为默认时不会发生这些问题,也因为我已经以正确的方式完成了它: * 最后的时间戳字符串以停止超级缓存 * JSONP 响应 等等等等
我可以确认呼叫根本没有触发。
【问题讨论】:
标签: jquery cross-domain jsonp