Hola, señor@s. Un saludo...
Mi duda. Estoy creando un API REST y necesito retornar, aparte del contenido, el valor del un token dentro de una cabecera HTTP creada por mí. La creación de headers en Symfony es fácil. Ejemplo:
$response = new Response(); $response->headers->set('X-CONTENT-HASH,'elValorDelToken'); return $response;
Según, información leída, la captura de estos headers debería hacerse así:
$.ajax({ url: 'url', type: 'post', data: { token: 'pass1' }, dataType: 'json', success: function(data, status, xhr){ console.log(xhr.getResponseHeader("X-TOKEN")); } });
Pero, el valor que retorna es null
. ¿Alguien ha hecho algo similar? ¿Se puede?
Muchas gracias!
Respuestas
El código que muestras parece correcto. ¿Puedes probar a mostrar por consola el contenido de xhr. getAllResponseHeaders()
a ver si existe alguna cabecera o son todas null
?
@javiereguiluz
Claro que sí Javier. Estoy siguiendo este ejemplo de listener pre | post Controller. El token que se genera en el post controller es que el quiero atrapar en el AJAX.
Te muestro el resultado del console...
$.ajax({ url: 'url', type: 'post', data: { token: 'pass1' }, dataType: 'json', success: function(data, status, xhr){ console.log(data); console.log(status); console.log(xhr); console.log(xhr.getResponseHeader("X-CONTENT-HASH")); } });
Saludos!
@cristian_angulo
Buenas cristian_angulo, porque no mandas el header desde el cliente en cada petición al servidor y sea el servidor el que compruebe que esa cabecera existe para dar permiso a utilizar el servicio.
@ZaoIsmael
Hola Cristian, te faltó hacer el console.log de xhr.getAllResponseHeaders()
, ya que haciendo solo console.log(xhr)
no te va a mostrar todas los headers retornados por la petición. Entonces la idea es hacer un console.log(xhr.getAllResponseHeaders())
para ver si realmente viene el header o no.
Por otro lado, puedes tambien revisar con la consola de chrome, inspeccionar la petición ajax y revisar si viene el header que necesitas en dicha consulta.
Saludos!
@manuel_j555