es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El HttpLink de Apollo Client no envía cookies con “same-origin” en un escenario de subdominio.

El HttpLink de Apollo no envía cookies con la política “same-origin”, aunque “same-origin” se cumple en el escenario actual según la especificación:

  • auth.example.com establece cookies para el dominio example.com
  • las cookies deberían enviarse en las solicitudes a api.example.com

Los subdominios deberían estar incluidos en “same-origin”, pero las cookies no se envían (la API responde con un 401 debido a la falta de cookies, también confirmado en el análisis de red de los navegadores).
CORS está configurado correctamente (incluyendo access-control-allow-credentials). El hecho de que api.exmaple.com sea un registro DNS CNAME y finalmente se redireccione a un dominio diferente no debería importar, según mi investigación, porque el cliente no se da cuenta de esto en el momento de la solicitud.

Este es mi HttpLink:

const hasuraHttpLink = createHttpLink({
  uri: 'api.example.com',
  credentials: 'same-origin'
});

Curiosamente, este problema no ocurre con el WebSocketLink de Apollo, esto funciona bien.

¿Alguien puede confirmar esto o encontrar un error en mis suposiciones?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que aunque los subdominios estén bajo la política de mismo origen, el HttpLink en Apollo no envía cookies. Esto podría ser la razón por la cual la API responde con un error 401 debido a la falta de cookies, como se ve en el análisis de red.

    CORS está correctamente configurado con access-control-allow-credentials, por lo que ese no es el problema. El hecho de que api.example.com sea un registro DNS CNAME que eventualmente lleva a un dominio diferente no debería afectar al cliente en el momento de la solicitud, según la investigación.

    El código proporcionado para HttpLink parece estar correcto:

    const hasuraHttpLink = createHttpLink({
      uri: 'api.example.com',
      credentials: 'same-origin'
    });
    

    Sin embargo, es interesante destacar que el problema no ocurre con WebSocketLink de Apollo, que funciona correctamente. Es posible que pueda haber un bug o algún problema específico con HttpLink en este escenario. Puede ser necesario realizar pruebas e investigaciones adicionales para confirmar esto o encontrar algún error en las suposiciones realizadas.

Comments are closed.