如何使用Javascript/Ajax获取远程url的状态码,而不是使用jQuery

How to get status code of remote url using Javascript/Ajax but NOT using jQuery?

本文关键字:jQuery 状态 Javascript 何使用 Ajax 获取 url      更新时间:2023-09-26

我试图检查一个url是否可达或不使用javascript而不使用jQuery或从该url加载图像的方法。如果我能得到那个url的状态码就太好了,因为我只关心状态码是200。

我已经尝试过XMLHttpRequest,但我了解到它不支持跨域调用。

请帮助。

谢谢。

如果没有XMLHttpRequest,直接在JavaScript中获取状态码是不可能的。正如所指出的,这通常只是同一域,尽管我知道有两种可能的跨域方法(不需要代理服务器):

  1. 某些客户端和服务器可以使用跨域资源共享和;
  2. 也有基于flash的"XHR"解决方案。
另一方面,如果所有关心的是图像认为它可以被加载(这可能不是一个200 !),那么可以使用image元素和onload事件来发现这一点。如果onload事件在一定时间内没有触发,则可以断定请求超时或失败(4xx/5xx)。但是,这将在302等情况下返回假阳性。

只要确保浏览器确实尝试加载图像:一些更聪明的浏览器不会加载隐藏的图像,或者我听说过。

快乐编码。

我不确定这是如何"跨浏览器"的:

<script src="http://www.google.com" onerror="alert('error')"></script> <!-- Is Fine -->
<script src="http://www.notrealnotrealzz.com" onerror="alert('error')"></script> <!-- Alerts Error -->

这显然是一个黑客,但希望它能帮助。

更动态的版本:

var el = document.createElement('script');
el.onerror = errorFunction;
el.src = url;
document.body.appendChild(el);

使用服务器端语言创建一个服务器端脚本,让该脚本返回状态码。这个"代理"脚本将为您请求URL,因此不需要进行跨域请求。

关于Python响应代码脚本的示例,请参见这里:从URL获取HTTP响应代码的最佳方法是什么?

希望有帮助,-Sunjay03