Titre :
Problème avec les cookies HttpOnly en PHP et JavaScript — Impossible de les lire en front-end
Description :
Bonjour à tous,
Je travaille sur une application PHP avec gestion de connexion et j'essaie de mettre en place un système de cookies HttpOnly pour sécuriser le stockage du JWT (ou token d'authentification). Cependant, je rencontre des difficultés pour faire fonctionner correctement les cookies HttpOnly.
Ce que j'ai mis en place :
Lors de la connexion, j'encode un JWT en PHP et je le stocke dans un cookie HttpOnly comme ceci :
$response->setCookie(
'token', // nom
$token, // valeur
3600, // durée en secondes
'/', // chemin
'', // domaine
false, // sécurisé (je le définis sur false pour tester en local)
true, // HttpOnly
'Strict' // SameSite
);
En front-end, je tente de lire ce cookie via JavaScript, mais il semble que le cookie ne soit pas accessible, comme prévu, car il est HttpOnly. Cependant, cela empêche mon front-end de l'utiliser pour les requêtes API.
Problème rencontré :
Je comprends que les cookies HttpOnly ne peuvent pas être lus directement via JavaScript, mais comment puis-je les utiliser pour les requêtes API ?
Faut-il que je les envoie manuellement dans l'en-tête des requêtes HTTP (comme un token Authorization) ou est-ce que le serveur est censé automatiquement lire le cookie HttpOnly ?
Existe-t-il des configurations spécifiques que je dois vérifier pour que ce mécanisme fonctionne correctement en production ?
Ce que j'ai testé :
J'ai essayé d'ajouter l'option Secure au cookie pour activer la sécurité HTTPS, mais le problème persiste (même après avoir testé en environnement local).
J'ai également vérifié que le domaine du cookie est correctement défini.
Mon objectif :
Je souhaite garder les cookies HttpOnly pour plus de sécurité, mais je veux aussi être en mesure de les utiliser pour l'authentification des requêtes côté client sans exposer le token à JavaScript.
En résumé :
Les cookies HttpOnly ne sont pas accessibles en JavaScript, mais je veux savoir comment les utiliser pour l'authentification des requêtes API.
Dois-je configurer quelque chose de spécifique pour faire cela correctement ?
Merci d'avance pour votre aide !