Maison >développement back-end >Golang >Pourquoi mes cookies HTTPOnly ne sont-ils pas définis sur Localhost ?

Pourquoi mes cookies HTTPOnly ne sont-ils pas définis sur Localhost ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-25 05:02:11968parcourir

Why Aren't My HTTPOnly Cookies Being Set on Localhost?

Le cookie HTTPOnly n'est pas défini dans le navigateur Localhost

Problème :

Connexion à une API REST le point de terminaison envoie un cookie HTTPOnly contenant la charge utile (JWT), mais le cookie n'est pas défini dans les navigateurs. Cette approche fonctionnait depuis des années, mais elle s'est récemment arrêtée. Le problème est isolé de l’environnement localhost. Les tests Postman confirment que le cookie est défini comme prévu.

Approches utilisées :

  • Mise en œuvre des éléments essentiels du point de terminaison de connexion dans Go Fiber et Node Express.
  • Réduire le front-end à une connexion de base form.

Enquête :

Les API Go et Node envoient toutes deux correctement l'en-tête Set-Cookie avec l'indicateur HTTPOnly défini. Cela indique que le problème peut provenir du navigateur ou de la méthode fetch().

Solution :

Le problème a été résolu en ajoutant les informations d'identification : propriété "include" à la méthode fetch() dans le JavaScript frontal. Cette propriété demande au navigateur d'envoyer et de recevoir des cookies.

Raison :

Les cookies HTTPOnly sont conçus pour empêcher le JavaScript côté client d'accéder au contenu du cookie. Les navigateurs prennent en charge cela en n'envoyant pas le cookie dans les requêtes XHR ou fetch() par défaut. En ajoutant les informations d'identification : propriété "include", le navigateur est explicitement invité à envoyer le cookie avec la demande, lui permettant d'être reçu par le serveur et défini de manière appropriée.

Remarques supplémentaires :

  • Si vous utilisez Axios pour les requêtes HTTP, il inclut automatiquement les informations d'identification dans sa configuration.
  • Pour Node Express, vous pouvez également besoin de définir withCredentials : true dans la configuration de la demande pour permettre au navigateur de définir le cookie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn