
Como redirecionar de um domínio para outro e definir cookies ou cabeçalhos para o outro domínio?
Os redirecionamentos HTTP não permitem a configuração de cabeçalhos ou cookies personalizados para o destino domínio. Além disso, os navegadores evitam definir cookies para um domínio diferente daquele que responde com o cabeçalho Set-Cookie.
Solução 1: redirecionar com parâmetro de consulta e depois definir cookie
- Redirecionar de domínio A para domínio B com um token de acesso passado como parâmetro de consulta.
- O domínio B recebe a solicitação e define seu próprio cookie usando o token.
Solução 2: origem cruzada Comunicação com Window.postMessage()
- Adicione um iframe oculto ao domínio A apontando para o domínio B.
- Envie o token de acesso ao domínio B usando Window.postMessage().
- O domínio B armazena o token em localStorage ou define um cookie usando JS.
- Envie uma mensagem ao domínio A informando que o token foi armazenado e redirecione o usuário para o domínio B.
Solução 3: troca de token do lado do servidor
- Use uma tag
no domínio A para apontar para o domínio B com um token de acesso como parâmetro de consulta. - O domínio B responde com Cabeçalhos Set-Cookie ao receber a solicitação.
- Use fetch ou XMLHttpRequest (com credenciais e CORS habilitados) para enviar o token diretamente para o domínio B.
- O domínio B define o cookie ao receber o acesso token.
Notas importantes:
- Permitir que todos os cookies devem estar habilitados nas configurações do navegador para que as soluções 2 e 3 funcionem.
- Usar SameSite=Nenhum; Sinalizadores seguros em cookies para a Solução 3.
- A string de consulta na Solução 1 expõe o token de acesso e apresenta riscos de segurança.
- A Solução 3 requer CORS habilitado no domínio de destino e especificação de origem explícita no lado do servidor.