Отслеживание страниц с ошибками 404 или Как отслеживать состояние запроса заголовка http, сделанного браузером с использованием Javascript - PullRequest
1 голос
/ 05 августа 2011

Я разрабатываю скрипт, который помогает отслеживать 404 страницы ошибок (с использованием JavaScript) на стороне клиента.Я искал учебники / посты по этому же вопросу, но не нашел ничего полезного для меня.

В одном посте упоминалось использование curl (PHP) на стороне сервера и перенаправление пользователя на пользовательскую страницу 404.Но это не решает мою проблему (я хочу, чтобы это было на стороне клиента).

На этой странице упоминается, как создать объект http, открыть соединение и определить его статус в этомway:

var request = makeHttpObject();
  request.open("GET", "your_url", true);
  request.send(null);
 ....
  if( request.status == 404 )
      print("404 error")

Но здесь мы сами делаем http-запрос и, следовательно, имеем доступ к объекту.Моя цель - обнаружить любые 404 ошибки страницы из запроса, отправленного браузером (из-за навигации пользователя).

Можем ли мы отслеживать http-объект браузера на предмет статуса ответа?Как функция сетевого анализа Firebug получает доступ к заголовкам http?Могу ли я повторить это в моем скрипте?

Я заметил, что консоль инструмента разработчика браузера выдает ошибку 404 для отсутствующих страниц, а также для отдельных элементов, таких как изображения на этой странице.

Возможные решения, которые я мог бы себе представить:

  1. Отслеживание response.status каждого http-запроса, отправляемого браузером

  2. Используйте Уведомление об ошибках Developer Tool / Browser для отслеживания ошибок 404 с помощью «API» для извлечения этих уведомлений об ошибках инструмента (если оно существует)

Большое спасибо

1 Ответ

0 голосов
/ 16 января 2013

Ты имеешь в виду что-то подобное?

function returnStatus(req, status) {
  //console.log(req);
  if(status == 404) {
    console.log("The url returned status code " + status);
  }
  else {
    console.log("success");
  }
}

function fetchStatus(address) {
 var client = new XMLHttpRequest();
 client.onreadystatechange = function() {
  // in case of network errors this might not give reliable results
  if(this.readyState == 4)
   returnStatus(this, this.status);
 }
 client.open("HEAD", address);
 client.send();
}

fetchStatus("http://yoururl.com");
...