Gracias
zerokilled por la ayuda. Así que HttpOnly lo único que hace es impedir que el cookie pueda ser modificado mediante javascript pero éste se envia igual. Estaba confundido con esto.
Por otro lado, acabo de solucionarlo. La solución estaba en otro
post que abrí hace un tiempo en este mismo subforo. Se trata del uso de
Access-Control-Allow-Credentials. La otra vez que me lo explicaron, como no estaba usando cookies, no vi para que servía esta directiva y no le di la importancia que tenia. He encontrado una explicación en
este enlace(Apartado "Credenciales y autenticación") que me ha dado las pistas necesarias para que me funcione.
Sin embargo no he acabado de entender el concepto. Por ejemplo se dice refiriendose a la opcion de configuración withCredentials cuando haces una petición ajax mediante jQuery:
Cita: La marca withCredentials hace dos cosas: Si el servidor emite una cookie, el explorador puede aceptarla; si el explorador tiene una cookie, puede enviarla al servidor.
Esto es justamente lo que necesito, que pueda recibir una cookie del servidor y también poder enviarla. Pero no me ha hecho falta poner esa opción para que la cookie llegara. Luego dice para que sirve
Access-Control-Allow-Credentials:
Cita: El encabezado de respuesta Access-Control-Allow-Credentials hace dos cosas: si la respuesta tiene una cookie, el explorador puede aceptarla; y si el explorador envió una cookie con la solicitud, el cliente JavaScript puede recibir los resultados de la llamada.
Entonces, ¿poner esta cabecera a true no es lo mismo que lo de arriba? Yo he puesto
Access-Control-Allow-Credentials a true y me ha funcionado sin tener que retocar la petición ajax.
Luego acaba diciendo:
Cita: En otras palabras, si el cliente establece withCredentials, entonces el cliente solo recibirá una devolución de llamada con el acierto en JavaScript si el servidor permite credenciales (en la respuesta). Si se hubiera establecido withCredentials y el servidor no permitiera las credenciales, entonces el cliente no obtendría acceso a los resultados y se invocaría la devolución de llamada de error de cliente.
Es decir, si pones
withCredentials pero el servidor no tiene
Access-Control-Allow-Credentials: true entonces no funcionará. ¿Pero y en caso inverso? ¿si pones
Access-Control-Allow-Credentials: true pero la petición ajax no tiene
withCredentials: true que ocurrirá? Como he dicho, sin poner withCredentials a mi me funciona igualmente. Entonces no acabo de entender para qué sirve withCredentials.
Un saludo y gracias nuevamente. Ahora al menos ya puedo ir apañándome.