w3schools tag example ejemplo change javascript ajax header request request-headers

tag - xmlhttprequest javascript example



JS/jQuery obtener encabezados de solicitud HTTPRequest? (2)

Algo que podrías hacer es usar FakeXMLHttpRequest de Sinon para reemplazar el XHR de tu navegador. En este documento se describe cómo usarlo para las pruebas, pero estoy bastante seguro de que puede usar el módulo para sus propósitos de depuración.

Lo que necesitas hacer es:

var requests; this.xhr = sinon.useFakeXMLHttpRequest(); this.xhr.onCreate = function(xhr) { requests.push(xhr); }

Y luego, más adelante, puede verificar la matriz de requests de encabezados mediante:

console.log(requests[0].requestHeaders);

Para acceder a sus encabezados de solicitud.

Al usar getAllResponseHeaders en el objeto xhr, es posible obtener todos los encabezados de respuesta después de una llamada ajax. Pero no puedo encontrar una manera de obtener la cadena de encabezados de solicitud, ¿es posible?


Si esto es para propósitos de depuración, entonces puede usar Firebug o Chrome Developer Tools (y como se llame a la función en IE) para examinar el tráfico de red desde su navegador al servidor.

Una alternativa sería usar algo como este script:

$.ajax({ url: ''someurl'', headers:{''foo'':''bar''}, complete: function() { alert(this.headers.foo); } });

Sin embargo, creo que solo los encabezados que ya están definidos en los headers están disponibles (no estoy seguro de qué sucede si los encabezados están alterados (por ejemplo, antes de Enviar).

Puedes leer un poco más sobre jQuery ajax en: http://api.jquery.com/jQuery.ajax/

EDITAR: Si solo desea capturar los encabezados en todas las llamadas a setRequestHeader en el XMLHttpRequest, entonces puede simplemente envolver ese método. Es un poco difícil y, por supuesto, debería asegurarse de que el código de ajuste de funciones que se muestra a continuación se ejecute antes de que se realice alguna de las solicitudes.

// Reasign the existing setRequestHeader function to // something else on the XMLHtttpRequest class XMLHttpRequest.prototype.wrappedSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader; // Override the existing setRequestHeader function so that it stores the headers XMLHttpRequest.prototype.setRequestHeader = function(header, value) { // Call the wrappedSetRequestHeader function first // so we get exceptions if we are in an erronous state etc. this.wrappedSetRequestHeader(header, value); // Create a headers map if it does not exist if(!this.headers) { this.headers = {}; } // Create a list for the header that if it does not exist if(!this.headers[header]) { this.headers[header] = []; } // Add the value to the header this.headers[header].push(value); }

Ahora, una vez que los encabezados se han establecido en una instancia de XMLHttpRequest , podemos eliminarlos examinando xhr.headers por ejemplo

var xhr = new XMLHttpRequest(); xhr.open(''get'', ''demo.cgi''); xhr.setRequestHeader(''foo'',''bar''); alert(xhr.headers[''foo''][0]); // gives an alert with ''bar''