Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JS检测特定错误(403)_Javascript_Jquery_Http Status Code 403 - Fatal编程技术网

Javascript 使用JS检测特定错误(403)

Javascript 使用JS检测特定错误(403),javascript,jquery,http-status-code-403,Javascript,Jquery,Http Status Code 403,我试图捕获我的页面上的一个潜在错误,该页面有一个URL集合(在页面加载时检索)到各种资源,这些资源在需要时加载 但是,这些资源仅在设定的时间内可用,因此如果用户长时间闲置页面,URL可能不再有效,并可能返回403 我目前正在使用以下方法检测资源上的错误: $(".identifier").on("error", function () { console.log("Error on resource load"); }); 但是我可以检测到特定类型的错误/错误代码吗?e、 g.403权

我试图捕获我的页面上的一个潜在错误,该页面有一个URL集合(在页面加载时检索)到各种资源,这些资源在需要时加载

但是,这些资源仅在设定的时间内可用,因此如果用户长时间闲置页面,URL可能不再有效,并可能返回403

我目前正在使用以下方法检测资源上的错误:

$(".identifier").on("error", function () {
    console.log("Error on resource load");
});

但是我可以检测到特定类型的错误/错误代码吗?e、 g.403权限错误,而不是一般的“存在错误”。如果可能的话,我希望能够对不同的错误做出不同的反应。

假设您在一个数组中拥有指向资源的所有可用URL,例如

var resources = [
    "http://url/to/resource-one.fiel",
    "http://url/to/resource-two.fiel"
    ]
然后,您可以使用以下函数检查这些资源的http响应,方法是在数组上循环并将每个资源传递给checkResources

   function checkResource (url, index) {
      var req = new XMLHttpRequest();
      req.open('HEAD', url, true);
      req.send();
      if (req.status === 404) {
        return index;
      }
      if (req.status === 403) {
        return index;
      }
   };
或者使用不带循环的特定URL并删除函数中的索引参数, 可能会返回URL。换句话说,执行一个ajax头请求,它将只返回头资源,而不是资源本身

您还可以按名称获取所有标题信息或特定标题信息,如下所示

 xmlhttp.open('HEAD', 'path/to/your/resource', true);
 xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4) {
      console.log(xmlhttp.getAllResponseHeaders()); // get all header info
      console.log(xmlhttp.getResponseHeader("Last-Modified")); // get by name
    }
 }
 xmlhttp.send(null)

也许这能帮你,嗯,好的,我可以查一下资源主管。然而,我希望我能以某种方式读取返回的错误,而不是每次加载某个内容时将请求加倍。您是否通过ajax请求资源?这些资源是以标准HTML5视频元素显示的视频文件。我正在设置视频元素的源,浏览器正在获取内容。据我所知,错误事件处理程序只提供与脚本和文件相关的错误信息。您试图捕获的错误与http请求相关,因此,如果您试图捕获这些错误并在javascript中获取有关这些错误的信息,则必须使用ajax,或者使用视频元素上的错误事件处理程序并检查networkState属性,但这不会提供有关http响应头的信息。您找到了一个优雅的解决方案吗?