2009-05-07 24 views
15

quiero de detectar en una secuencia de comandos, lo que podría ser desplegado fuera de mi control, si la página fue entregado con un código de estado HTTP de 200, 404 o 500, etc.Cómo detectar el estado HTTP desde JavaScript

Esto no puede t hecho, ¿verdad?

+0

Podrías mirar el contenido de la página para ver si contiene frases como "no encontrado" o "error", pero probablemente sea lo mejor que puedas hacer. – rjmunro

Respuesta

7

que la página hace un XMLHttpRequest para sí mismo (usando location.href o document.URL) y compruebe el estado HTTP que se obtiene. Parece ser una forma bastante portátil para mí. No entiendo por qué harías algo como esto;)

+0

Sí, esta es la solución a la que terminé: adicionalmente hice una solicitud HTTP HEAD para prevenir que el cliente descargue la página entera dos veces. ¿Por qué quiero hacer esto? Piensa en un archivo .js que estoy escribiendo para que los administradores del sitio web lo instalen en su sitio web. – EoghanM

+0

Esto es peligroso, porque la segunda solicitud podría alterar el servidor de maneras inesperadas (pero con la POST-doble de la página), etc. Además, la misma solicitud podría tener éxito una vez, pero fallar la próxima vez. – WhyNotHugo

+1

Estoy confundido, ni @EoghanM ni yo mencionamos POST. Incluso dice que usó HEAD. Usar GET o HEAD debe ser seguro, ya que son métodos idempotentes y no deben causar efectos secundarios. – anddoutoi

1

La página A puede ser un Javascript que carga la página B a través de AJAX y la muestra con document.write o en una ventana emergente o sin embargo.

En dicha estrategia, puede verificar el código de retorno para éxito/falla en el controlador AJAX y enviar cosas diferentes a la ventana de salida dependiendo del estado.

mayoría de las bibliotecas Ajax proporcionan una forma de examinar el código de retorno ....

Véase, por ejemplo "transport.status" con Ajax.Request en Prototype.js

+0

Parece que estás en el camino correcto con transport.status. Idealmente, me gustaría evitar otra solicitud HTTP, pero ¿quizás esta sea la única manera? – EoghanM

+0

No tengo suficiente experiencia para saber si esta es la ÚNICA manera o no. Si usa la respuesta que di, también deberá obedecer el modelo de seguridad de Javascript y buscar páginas SOLAMENTE desde el mismo sitio. Sin embargo, esto puede lograrse mediante el uso inteligente de proxies. – Paul

-2

¿Por qué la necesidad de saber javascript ¿esta? Parece que tendría más sentido solo para incrustarlo en una página 404 personalizada. No es necesario detectar el estado HTTP de la página primaria (no creo que sea posible, tal vez haciendo una llamada a Ajax después de cada carga, pero eso es una tontería). si se está ejecutando el código, la garantía de ser un 404

+1

No puedo crear una página 404 personalizada porque la secuencia de comandos está "siendo implementada más allá de mi control" - No estoy haciendo el HTML y la página 404 no estará en mi sitio :) – EoghanM

+0

Haciendo una extensión de navegador y ejecutándose el mismo problema: si el URL 404 actual es un error de ortografía de una página común en un determinado sitio, estoy intentando redireccionar a esa página. Voy con la solución AJAX, ya que no creo que el estado de eliminación de una página cambie a menudo en milisegundos entre la primera y la segunda solicitud. –

-2

recientemente he encontrado cómo hacerlo (créditos a: hunlock)

AJAX.getAllResponseHeaders() - devuelve como una cadena de todos los actuales cabeceras en utilizar. AJAX.getResponseHeader ("headerLabel") - devuelve el valor del encabezado solicitado .

Cuestiones relacionadas