XMLHttpRequest 异常 101:同步请求中出现网络错误

Posted

技术标签:

【中文标题】XMLHttpRequest 异常 101:同步请求中出现网络错误【英文标题】:XMLHttpRequest Exception 101: A network error occurred in synchronous requests 【发布时间】:2012-06-23 13:36:34 【问题描述】:

所以我正在构建一个 jQuery 插件,以便在用户使用高像素密度设备时将普通图形替换为视网膜图形。该交换的一部分需要检查文件的视网膜版本是否存在于网络上的某个 url。以下是它的检查方式:

function urlExists(url) 
    var http = new XMLHttpRequest();
    http.open('HEAD', url, false);
    http.send();
    return http.status!=404;
;

但是,当它尝试检查与当前服务器不同的服务器上的文件时,它会在控制台中出现以下错误:

XMLHttpRequest Exception 101: A network error occurred in synchronous requests.

如何允许跨域 XML https 请求,以便在任何加载插件的站点上都可以使用?

另外,我想最终将其转换为 JS,因此最好不使用 jQuery。

这是一个 JSFiddle:http://jsfiddle.net/JacksonGariety/7YYgP/1/ (注意:我已经注释掉了对视网膜设备的检查部分,所以你可以测试东西)

【问题讨论】:

从它的样子来看,你根本没有执行任何 jQuery。至少使用您提供的代码。 如果你查看 jdFiddle,这里和那里混杂了一些 jQuery。 【参考方案1】:

允许跨域 AJAX 请求取决于 server 配置,而不是 client(据我所知)。这意味着仅通过单独加载 jQuery / JS 插件无法确保成功/允许跨域 AJAX 请求。

如果有的话,天哪,我很想知道。

【讨论】:

我不是很喜欢CoffeeScript的人,但是从我看,这肯定是发送XHR,但仅限于当前文档的域? It's jumping ship if it detects that the image is in an external server(第 18-26 行)。 我认为答案不正确——跨域 AJAX 请求取决于客户端。当您从客户端向服务器发出请求时,服务器并不关心您来自不同的 IP 地址(因为这是大多数互联网!)。 @badunk ~ 没错,XS AJAX 限制主要在 client 上;但是,如果您正在编写插件,则不能指望指示您的网络用户嘿,在浏览此站点之前,请确保您的浏览器已启用 XS!只需转到工具 > 设置...等等。除此之外,允许 XS(甚至是伪形式)的唯一(可行?)方法是通过 JSONP 或 CORS,这两者都依赖于某种预先存在的服务器配置/准备。

以上是关于XMLHttpRequest 异常 101:同步请求中出现网络错误的主要内容,如果未能解决你的问题,请参考以下文章

爬虫日记(101):Twisted:使用Deferred重构异常代码

CocosCreator start延迟调用导致帧同步异常

具有超时条件的 XMLHTTPRequest

XMLHTTPRequest 错误:不推荐使用主线程上的同步 XMLHttpRequest ...(SoundCloud API)

jQuery 已弃用同步 XMLHTTPRequest

Chrome 和其他浏览器会放弃对同步 XMLHttpRequest 的支持吗?