378 votos

Acceso a la página web de la Encabezados HTTP en JavaScript

¿Cómo puedo acceder a una página los encabezados de respuesta HTTP a través de JavaScript?

Relacionado con esta cuestión, que fue modificado para preguntar sobre el acceso a dos de las cabeceras HTTP.

Relacionado:
¿Cómo puedo acceder a el encabezado de solicitud HTTP campos a través de JavaScript?

Duplicado:
¿Cómo puedo leer los encabezados, sin hacer un nuevo pedido con JS?

350voto

Raja Puntos 1913

Utilice el siguiente código javascript para obtener todos los encabezados HTTP.

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
alert(headers);

284voto

keparo Puntos 13747

Desafortunadamente, no hay una API para darle los encabezados de respuesta HTTP para tu página inicial de la solicitud. Esa fue la pregunta original publicado aquí. Se ha pedido en repetidas ocasiones, demasiado, debido a que algunas personas les gustaría conseguir la respuesta real de los encabezados de la página original de la solicitud sin necesidad de emitir otra.

Para Peticiones AJAX:

Si una solicitud HTTP se realiza a través de AJAX, es posible obtener los encabezados de respuesta con el getAllResponseHeaders() método. Es parte de la XMLHttpRequest API. Para ver cómo se puede aplicar esto, echa un vistazo a la fetchSimilarHeaders() la función de más abajo. Tenga en cuenta que este es un trabajo en torno al problema de que no es adecuado para algunas aplicaciones.

myXMLHttpRequest.getAllResponseHeaders();

La API se especifica en el siguiente candidato recomendación para XMLHttpRequest: XMLHttpRequest - W3C Candidato a la Recomendación 3 de agosto de 2010

Específicamente, el getAllResponseHeaders() método fue especificado en la sección siguiente:
http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders()-method

El MDN documentación es buena también:
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.

Esto no le dará información acerca de la página original de la solicitud de los encabezados de respuesta HTTP, pero podría ser utilizado para hacer conjeturas acerca de lo que los encabezados fueron. Más en la que se describe a continuación.

Obtención de los valores de encabezado de la Página Inicial de Solicitud:

Esta pregunta se pidió por primera vez hace varios años, preguntar específicamente acerca de cómo obtener el original de los encabezados de respuesta HTTP de la página actual (es decir. la misma página dentro de la cual el javascript se ejecuta). Esta es una cuestión diferente que sencillamente los encabezados de respuesta para cualquier petición HTTP. Para la primera solicitud de la página, los encabezados no son fácilmente disponibles para javascript. Si los valores de encabezado que usted necesita ser fiable y lo suficientemente consistente si usted solicita la misma página otra vez a través de AJAX dependerá de su aplicación en particular.

Las siguientes son algunas sugerencias para conseguir alrededor de ese problema.

1. Las solicitudes de Recursos que son estáticas

Si la respuesta es en gran parte estática y las cabeceras no se espera que vaya a cambiar mucho entre las solicitudes, usted podría hacer una petición AJAX para la misma página en la que estamos actualmente, y asumir que son ellos son los mismos valores que fueron parte de la página de respuesta HTTP. Esto podría permitir el acceso a los encabezados de que necesita mediante la agradable XMLHttpRequest API descrito anteriormente.

function fetchSimilarHeaders (callback) {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState === 4) {
            //
            // The following headers may often be similar
            // to those of the original page request...
            //
            if (callback && typeof callback === 'function') {
                callback(request.getAllResponseHeaders());
            }
        }
    };

    //
    // Re-request the same page (document.location)
    // We hope to get the same or similar response headers to those which 
    // came with the current page, but we have no guarantee.
    // Since we are only after the headers, a HEAD request may be sufficient.
    //
    request.open('HEAD', document.location, true);
    request.send(null);
}

Este enfoque va a ser problemático si usted realmente tiene que confiar en los valores de ser coherente entre las solicitudes, ya que no se puede garantizar plenamente que son la misma. Va a depender de su aplicación específica y si usted sabe que el valor que usted necesita es algo que no cambian de una solicitud a la siguiente.

2. Hacer Inferencias

Hay algunos BOM propiedades que el navegador determina por mirar las cabeceras. Algunas de estas propiedades reflejan los encabezados HTTP de forma directa (por ej. navigator.userAgent se establece en el valor de la HTTP UserAgent campo de encabezado). Por husmear las propiedades disponibles que usted puede ser capaz de encontrar lo que usted necesita, o algunas pistas para indicar cuál es la respuesta HTTP contenidos.

3. Guárdalos

Si usted controla el lado del servidor, puede acceder a cualquier encabezado de como construir la respuesta completa. Los valores podrían ser pasados al cliente con la página, escondido en alguna etiqueta o tal vez en una línea estructura JSON. Si usted quisiera tener en cada encabezado de solicitud HTTP a disposición de su javascript, puede iterar a través de ellos en el servidor y enviar de vuelta como valores ocultos en el marcado. Probablemente no es ideal para enviar los valores de encabezado de esta manera, pero sin duda puedes hacerlo por el valor específico que usted necesita. Esta solución es, posiblemente ineficaz, también, pero es que hacer el trabajo si usted lo necesita.

27voto

Allain Lalonde Puntos 28717

Mediante XmlHttpRequest, se puede tirar de la página actual y, a continuación, examinar los encabezados http de la respuesta.

Mejor de los casos es sólo una HEAD de solicitud y, a continuación, examinar los encabezados.

Para algunos ejemplos de hacerlo echar un vistazo a http://www.jibbering.com/2002/4/httprequest.html

Sólo mis 2 centavos.

5voto

Leo Puntos 1587

¿Cómo puedo acceder a el encabezado de solicitud HTTP campos a través de JavaScript?

Si estamos hablando acerca de la Solicitud de los encabezados, puede crear su propia encabezados cuando haciendo XmlHttpRequests.

var request = new XMLHttpRequest();
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
request.open("GET", path, true);
request.send(null);

2voto

dlo Puntos 690

Esta es una vieja pregunta... no estoy seguro cuando el apoyo se hizo más amplia, pero getAllResponseHeaders() y getResponseHeader() parecen ahora ser bastante estándar: http://www.w3schools.com/dom/dom_http.asp

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X