Usando 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?JS/jQuery obtener encabezados de solicitud HTTPRequest?
Respuesta
Si esto se realiza con fines de depuración, puede usar Firebug o Chrome Developer Tools (y la función que se llame en IE) para examinar el tráfico de red de su navegador al servidor.
Una alternativa sería utilizar algo como este script:
$.ajax({
url: 'someurl',
headers:{'foo':'bar'},
complete: function() {
alert(this.headers.foo);
}
});
Sin embargo creo que sólo los encabezados ya definidos en headers
disponible (no está seguro de lo que sucede si se alteran los encabezados (por ejemplo, en beforeSend) .
usted puede leer un poco más sobre jQuery Ajax en: http://api.jquery.com/jQuery.ajax/
EDIT: Si desea simplemente coger las cabeceras de todos llama a setRequestHeader en XMLHttpRequest, entonces puedes simplemente envolver ese método. Es un poco complicado y, por supuesto, deberá asegurarse de que las funciones que configuran el código siguiente se ejecuten antes de que se produzca 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 las cabeceras se han establecido en una instancia XMLHttpRequest
podemos sacarlos por ejemplo, mediante el examen de xhr.headers
var xhr = new XMLHttpRequest();
xhr.open('get', 'demo.cgi');
xhr.setRequestHeader('foo','bar');
alert(xhr.headers['foo'][0]); // gives an alert with 'bar'
Cómo escribo en un comentario anterior: estoy escribiendo un depurador para mi plataforma para ayudar a los desarrolladores a desarrollar los módulos adicionales para él. El depurador capta todas las solicitudes de Ajax y muestra todas las solicitudes de información (encabezado de respuesta, datos de respuesta, url, estado, etc.).Solo quiero agregar los encabezados de las solicitudes para tener una vista completa de la solicitud. Sé que es posible usar herramientas integradas de depuración del navegador, solo quiero ofrecer una herramienta personalizada. Por lo tanto, los encabezados de solicitud no pueden ser atrapados :( – Lwyrn
¿Ha mirado la especificación w3c XMLHttpRequest? Http://www.w3.org/TR/2012/WD-XMLHttpRequest-20120117 Quizás podría ajustar el objeto XMLHttpRequest y luego capturar los encabezados tal como están siendo establecidos. Un poco incómodo. –
Sí, parece que no es posible capturar los encabezados de solicitud – Lwyrn
algo que podría utilizar a es FakeXMLHttpRequest de Sinon para reemplazar XHR de su navegador. Se describe en this document sobre cómo usarlo para la prueba, pero estoy bastante seguro de que puede usar el módulo para su depuración.
Lo que hay que hacer es:
var requests;
this.xhr = sinon.useFakeXMLHttpRequest();
this.xhr.onCreate = function(xhr) {
requests.push(xhr);
}
Y más tarde, se puede comprobar la matriz requests
para los encabezados por:
console.log(requests[0].requestHeaders);
Para acceder a las cabeceras de solicitud.
Documentación oficial: http://sinonjs.org/docs/#server – uglymunky
- 1. springframework obtener todos los encabezados de solicitud
- 2. Obtener encabezados de solicitud para Urllib2.Request?
- 3. Obtener encabezados HTTP en la solicitud asíncrona de WebClient
- 4. Obtener nombre de host sin utilizar HttpRequest
- 5. Rack :: Solicitud: ¿cómo obtengo todos los encabezados?
- 6. obtener encabezados ENVIADOS en XMLHttpRequest
- 7. modificar encabezados de solicitud en Internet Explorer
- 8. PHP GET Solicitud, envío de encabezados
- 9. leer certificado de cliente de httprequest C#
- 10. CORS - ¿Cómo 'prevuelo' una httprequest?
- 11. android httprequest java.net.UnknownHostException
- 12. Modificar encabezados HTTP para una solicitud JSONP
- 13. Agregar encabezados a una solicitud en rieles
- 14. Middleware Django y HttpRequest change
- 15. Cómo obtener los encabezados de respuesta de una solicitud de espuma
- 16. Orden de búsqueda de HttpRequest indexer
- 17. Ver encabezados de solicitud de cURL con datos de POST
- 18. ¿Hay alguna manera de obtener todos los encabezados de solicitud en una llamada jQuery $ .ajax?
- 19. HttpRequest PUT contenido en la biblioteca poco
- 20. Configuración de Lighttpd condicional basada en encabezados de solicitud
- 21. ¿HttpRequest tamaño máximo permitido en tomcat?
- 22. Logging HttpRequest parameters and request body
- 23. accediendo a los encabezados de solicitud en django/python
- 24. ¿Los encabezados de solicitud REST están encriptados por SSL?
- 25. Depurador Safari 6: vea los encabezados de solicitud/respuesta grabados
- 26. Pasar encabezados de solicitud en una llamada jQuery AJAX GET
- 27. ¿Cómo puedo ver los encabezados de solicitud realizados por curl al enviar una solicitud al servidor?
- 28. Android - Webview solo aplicando encabezados a la solicitud inicial
- 29. WCF REST lista los encabezados HTTP en la solicitud entrante
- 30. ¿Es posible enviar encabezados personalizados con un XHR (solicitud "Ajax")?
¿Por qué necesita saber cuáles eran los encabezados de solicitud en el cliente? – Quentin
Tiene fines de depuración – Lwyrn
¿Por qué no mira los encabezados de solicitud cuando llegan al servidor? ¿O usar un proxy como Charles? – Quentin