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''