Вземете кода на състоянието на XHR заявка без CORS заглавка

Опитвам се да проверя дали дадена страница съществува в мрежата. Не ми трябва съдържанието, само за да знам дали страницата съществува или не.

try {
    jQuery.ajax(link, {
      statusCode: {
        404: function() {
          jQuery("#moreInfo").html("not working");
        },
        200: function() {
          jQuery("#moreInfo").html("<a href='/bg" + 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]

Има ли начин да получа тази информация в моя скрипт и да проверя дали заявката е била успешна или не? Или има по-добър начин да се определи дали дадена страница съществува от страна на клиента?


person Josiah    schedule 31.05.2016    source източник


Отговори (2)


Има ли начин да получа тази информация в моя скрипт и да проверя дали заявката е била успешна или не?

Не с код от страна на клиента.

Браузърът знае и е щастлив да каже на потребителя за браузъра, но същата политика за произход му забранява да съобщава вашия JavaScript.

Трябва да направите това с код от страна на сървъра.

person Quentin    schedule 31.05.2016

Ако се опитвате да проверите само дали страницата съществува или не съществува по-долу, използваме нашия начин.

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 else false

person Tanvi B    schedule 31.05.2016