iPad上的同步AJAX调用失败,但其他平台和浏览器没有

时间:2011-07-14 19:53:00

标签: ajax ipad safari xmlhttprequest synchronous

有没有人知道为什么同步ajax调用会失败并在iPad上的Safari上出现以下错误,但是相同的代码在我到目前为止测试过的所有其他平台和浏览器上都能正常工作?

NETWORK_ERR:XMLHttpRequest异常101:同步请求中发生网络错误。

该错误表明我正在尝试跨域请求,但我不是;请求的URL位于同一主机上,实际上它是一个相对URL。即使是在琐碎的测试中,这也会在iPad上失败(并适用于所有其他平台和浏览器,包括Safari),所以我相信我已经排除了任何超时的可能性。

此外,同样的请求,如果是异步的,可以在iPad上完美运行;它只是提供101异常的同步请求。这让我发疯了!

还有一点细节:这只发生在我的生产服务器上。同步ajax调用实际上在我的开发服务器上工作正常。两台服务器都需要相同的客户端证书...所以我认为那里没有任何区别。我想不出两个服务器之间可能产生影响的任何区别。

对此问题的任何见解将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

事实证明,我们的开发和生产系统之间的关键区别在于证书要求。

问题证明,iPad版本的Safari上的XMLHttpRequest.send()处理受证书保护的域上的同步请求的方式存在问题。我无法解释该方法的内部,但不知何故它有一个问题并抛出101异常,相信它 - 显然 - 是一个跨域请求。同样,在同一个受证书保护的服务器上异步生成的相同请求也可以正常工作。令人沮丧的情况,一个没有解决方案!

相关问题