获取没有CORS头的XHR请求的状态代码

时间:2016-05-31 18:23:10

标签: javascript browser cors

我试图检查网页上是否存在某个网页。我不需要内容,只是想知道页面是否存在。

try {
    jQuery.ajax(link, {
      statusCode: {
        404: function() {
          jQuery("#moreInfo").html("not working");
        },
        200: function() {
          jQuery("#moreInfo").html("<a href='" + link + "'>Technical Details</a>");
        }
      }
    });
} catch (e) {
    console.log(e);
}

我发现浏览器知道它是否得到了404响应,这是我需要知道的。

我已尝试在控制台中运行请求并找到以下内容:

Internet Explorer:在200响应中,IE 11提供错误代码0x2ef1,而在404上则显示0x80070005

Chrome:404响应将以下内容添加到默认的无CORS标头响应:The response had HTTP status code 404

Firefox:如果启用了网络消息,则将状态代码记录到控制台 - [HTTP/1.1 404 NOT FOUND 6ms]

有没有办法在我的脚本中获取此信息并检查请求是否成功?或者有更好的方法来确定页面是否存在客户端?

2 个答案:

答案 0 :(得分:1)

  

有没有办法在我的脚本中获取此信息并检查请求是否成功?

不使用客户端代码。

浏览器知道并且很乐意告诉用户浏览器,但是相同的源策略禁止它告诉您的JavaScript。

您必须使用服务器端代码执行此操作。

答案 1 :(得分:1)

如果您只是想检查页面是否存在,我们会在我们的地方使用。

function isValidURL(link) {
    var encodedURL = encodeURIComponent(link);
    var isValid = false;

    $.ajax({
      url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + encodedURL + "%22&format=json",
      type: "get",
      async: false,
      dataType: "json",
      success: function(data) {
        isValid = data.query.results != null;
      },
      error: function(){
        isValid = false;
      }
    });

    return isValid;
}

如果它存在,那么函数将返回true,否则为false