Estoy tratando de configurar una cookie httpOnly en React mientras uso GraphQL y Apollo. Así es más o menos cómo se ve mi componente React:
const verifyEmail = () => { const [showMessage, setShowMessage] = useState(true); const [text, setText] = useState("Loading... Do not close."); const { data, error } = useQuery(VERIFY_EMAIL); useEffect(() => { if (error) {return setText(genericErrorMessage)} if (data) { const cookies = new Cookies(); cookies.set("token", data.verifyEmail.token, { expires: data.verifyEmail.expiry, secure: (process.env.SECURE_COOKIE === "true"), httpOnly: true, path: "/" }) return setText(data.verifyEmail.message); } }, [error, data]) return ( <div> {showMessage && (<ShowMessage setShowMessage={setShowMessage} text={text] />)} </div> ) }La idea aquí es usar los datos de respuesta de la API de GraphQL para establecer la cookie. Sin embargo, cada vez que intento hacerlo, aparece el siguiente error: "El 'token' de la cookie ha sido rechazado porque ya existe una cookie de solo HTTP, pero el script intentó almacenar una nueva". Tal vez recibo este error porque no se puede acceder a las cookies httpOnly a través de JavaScript y React es un marco de JavaScript que se ejecuta en el navegador del usuario. En cualquier caso, me pregunto si hay una manera de lograr esto. He visto gente en línea haciéndolo usando express y axios, pero no con consultas GraphQL y un cliente Apollo. Mi solución por el momento ha sido establecer la opción httpOnly en falso.
no, en su lugar, httpOnly existe para evitar que las cookies sean manipuladas en el cliente. Las cookies httpOnly deben manejarse en el servidor, no en el cliente.