2012-02-01 20 views
15

Estoy construyendo una herramienta de depuración para las solicitudes AJAX, y me gustaría mostrar los encabezados de solicitud/respuesta (al igual que Firebug). Puedo obtener los encabezados de respuesta usando jqXHR.getAllResponseHeaders, pero ¿hay un equivalente para los encabezados de solicitud ?


Si no es así, sé algo que puedo reconstruirlo a mí mismo:

GET /blah // this part is easy 
Host: servername.com // pretty easy 
Accept: ??? 
Referer: ??? // just use current page url? 
User-Agent: // easy from navigator.userAgent 
X-Requested-With: XMLHttpRequest // hardcoded, $.ajax always does this? 
Accept-Charset: ??? 
Accept-Encoding: ??? 
Accept-Language: ??? 
Connection: ??? 

me importa sobre todo de Accept. Parece que el navegador o algo está cambiando esto, ya que estoy configurando $.ajax({dataType:'json'}) y en firebug veo Accept application/json, text/javascript, */*; q=0.01. Me gustaría poder capturar el encabezado real que se envía.

¿Es seguro usar window.url o podría ser algo más?

No tengo idea de cómo obtener los valores Accept-* o Connection.

+0

posible duplicado de [obtener encabezados enviados en XMLHttpRequest] (http://stackoverflow.com/questions/7564007/get-sent-headers-in-an-xmlhttprequest) –

Respuesta

-6

Puede usar el objeto jqXHR en la función de éxito para acceder a los encabezados.

$.ajax({ 
... 
success: function(data, textStatus, jqXHR){ 
console.log(jqXHR); 
... 
} 
}) 

de http://api.jquery.com/jQuery.ajax/

+3

A partir de jq 2.0.3, puede obtener * encabezados de la respuesta * (a través de los directorios 'getAllResponseHeaders() 'o' getResponseHeader() ') pero no * request * como estaba pidiendo. – gregmac

3

Puede utilizar "esto" como referencia para la solicitud Ajax actual a continuación, obtener la propiedad "acepta", así:

$.ajax({ 
       type: 'POST', 
       dataType: 'JSON', 
       url:'ajax.php', 
       data:my_data_array, 
       success: function(data) { 
        console.log(this.accepts); 
       } 
      }); 
5

Respuesta corta - sorprendentemente, sin .

El XMLHttpRequest API no tiene un método para recuperar los encabezados de la solicitud que va a enviarse. Consulte también this question.

La nueva jqHXR object, a superset of the browser's native XMLHttpRequest, desafortunadamente tampoco implementa una.

El .ajaxComplete() callback pone un parámetro settings que contendrá la clave headers si ha preparado de la manera normal, pero no si usted ha utilizado .beforeSend() llamar setRequestHeader().

Cuestiones relacionadas