Como compartilhar cookies de origem cruzada? Mais especificamente, como usar o Set-Cookie
cabeçalho em combinação com o cabeçalho Access-Control-Allow-Origin
?
Aqui está uma explicação da minha situação:
Estou tentando definir um cookie para uma API que está sendo executada localhost:4000
em um aplicativo da web que está hospedado em localhost:3000
.
Parece que estou recebendo os cabeçalhos de resposta corretos no navegador, mas infelizmente eles não surtem efeito. Estes são os cabeçalhos de resposta:
HTTP / 1.1 200 OK Access-Control-Allow-Origin: http: // localhost: 3000 Variar: Origem, Aceitar-Codificação Set-Cookie: token = 0d522ba17e130d6d19eb9c25b7ac58387b798639f81ffe75bd449afbc3cc715d6b038e426adeac3316f0511dc7fae3f7; Max-Age = 86400; Domínio = localhost: 4000; Caminho = /; Expira = terça, 19 de setembro de 2017 21:11:36 GMT; HttpOnly Tipo de conteúdo: aplicativo / json; charset = utf-8 Comprimento do conteúdo: 180 ETag: W / "b4-VNrmF4xNeHGeLrGehNZTQNwAaUQ" Data: Seg, 18 de setembro de 2017 21:11:36 GMT Conexão: keep-alive
Além disso, posso ver o cookie Response Cookies
quando inspeciono o tráfego usando a guia Rede das ferramentas de desenvolvedor do Chrome. Ainda assim, não consigo ver um cookie sendo definido na guia Aplicativo em Storage/Cookies
. Não vejo nenhum erro CORS, então presumo que esteja faltando algo mais.
Alguma sugestão?
Atualização I:
Estou usando o módulo de solicitação em um aplicativo React-Redux para emitir uma solicitação para um /signin
endpoint no servidor. Para o servidor eu uso express.
Servidor expresso:
res.cookie ('token', 'xxx-xxx-xxx', {maxAge: 86400000, httpOnly: true, domain: 'localhost: 3000'})
Solicitação no navegador:
request.post ({uri: '/ signin', json: {userName: 'userOne', senha: '123456'}}, (err, resposta, corpo) => { // fazendo coisas })
Atualização II:
Estou definindo cabeçalhos de solicitação e resposta como um louco, certificando-me de que eles estejam presentes tanto na solicitação quanto na resposta. Abaixo está uma captura de tela. Observe os cabeçalhos Access-Control-Allow-Credentials
, Access-Control-Allow-Headers
, Access-Control-Allow-Methods
e Access-Control-Allow-Origin
. Olhando para o problema que encontrei no github do Axios , tenho a impressão de que todos os cabeçalhos necessários agora estão definidos. No entanto, ainda não há sorte ...