¿Cómo compartir cookies de origen cruzado? Más específicamente, ¿cómo usar el Set-Cookie
encabezado en combinación con el encabezado Access-Control-Allow-Origin
?
Aquí hay una explicación de mi situación:
Estoy intentando configurar una cookie para una API que se ejecuta localhost:4000
en una aplicación web alojada en localhost:3000
.
Parece que recibo los encabezados de respuesta correctos en el navegador, pero desafortunadamente no tienen ningún efecto. Estos son los encabezados de respuesta:
HTTP / 1.1 200 OK Acceso-Control-Permitir-Origen: http: // localhost: 3000 Variar: Origen, Aceptar codificación Set-Cookie: token = 0d522ba17e130d6d19eb9c25b7ac58387b798639f81ffe75bd449afbc3cc715d6b038e426adeac3316f0511dc7fae3f7; Edad máxima = 86400; Dominio = localhost: 4000; Ruta = /; Caduca = Martes, 19 de septiembre de 2017 21:11:36 GMT; HttpOnly Tipo de contenido: aplicación / json; juego de caracteres = utf-8 Longitud del contenido: 180 ETag: W / "b4-VNrmF4xNeHGeLrGehNZTQNwAaUQ" Fecha: lun, 18 de septiembre de 2017 21:11:36 GMT Conexión: mantener vivo
Además, puedo ver la cookie debajo Response Cookies
cuando inspecciono el tráfico usando la pestaña Red de las herramientas de desarrollo de Chrome. Sin embargo, no puedo ver que se establezca una cookie en la pestaña Aplicación debajo Storage/Cookies
. No veo ningún error de CORS, así que supongo que me falta algo más.
¿Alguna sugerencia?
Actualización I:
Estoy usando el módulo de solicitud en una aplicación React-Redux para emitir una solicitud a un /signin
punto final en el servidor. Para el servidor utilizo express.
Servidor expreso:
res.cookie ('token', 'xxx-xxx-xxx', {maxAge: 86400000, httpOnly: true, domain: 'localhost: 3000'})
Solicitud en navegador:
request.post ({uri: '/ signin', json: {userName: 'userOne', contraseña: '123456'}}, (err, response, body) => { // haciendo cosas })
Actualización II:
Estoy configurando encabezados de solicitud y respuesta ahora como loco, asegurándome de que estén presentes tanto en la solicitud como en la respuesta. A continuación se muestra una captura de pantalla. Fíjese en las cabeceras Access-Control-Allow-Credentials
, Access-Control-Allow-Headers
, Access-Control-Allow-Methods
y Access-Control-Allow-Origin
. Al observar el problema que encontré en el github de Axios , tengo la impresión de que todos los encabezados obligatorios ya están configurados. Sin embargo, todavía no hay suerte ...