2010-02-18 7 views
3

J'ai un site qui utilise www.example.com pour les pages standard et secure.example.com pour HTTPS. J'essaie de définir un cookie lorsque l'utilisateur se connecte qui sera valide à la fois sur les versions HTTP & HTTPS du site. Je le fais en définissant le chemin "/" et le domaine à ".example.com". Cela fonctionne bien dans Firefox et Internet Explorer, mais dans Chrome le cookie ne fonctionne que sur la version du site où il a été mis (http://www.example.com ou https://secure.example.com)Cookies Google Chrome - HTTP & HTTPS

Est-ce un bug ou que je fais quelque chose de mal? Si c'est un bug est-il une solution de contournement?

Le cookie est défini par PHP dans les en-têtes.

setcookie("login",base64_encode($email."::".md5($password)),2840184012,"/",".example.com"); 

Répondre

4

Vous ne pouvez pas définir un cookie pour HTTP et HTTPS en même temps. Vous devez définir deux cookies différents, un pour HTTP et HTTPS: un pour

setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com"); 
setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com", true); 

Cela ne fonctionne que si vous définissez les cookies dans https://secure.example.com que vous ne pouvez définir des cookies sécurisés via HTTPS.

Oh, et à propos: Do pas stocker les informations d'authentification dans un cookie! Utilisez à la place un jeton d'authentification valide.

+0

Essayé comme vous l'avez suggéré mais cela ne fonctionne toujours pas dans Chrome. J'utilise header ("Location: http://www.example.com") juste après avoir défini le cookie si cela fait une différence? – Tim

+1

@Tim: Et vous configurez ces cookies via HTTPS? – Gumbo

+0

Oui correct J'ai testé sur HTTPS. Le cookie fonctionne sur les sites HTTP et HTTPS dans tous mes navigateurs sauf Chrome où il ne fonctionne que sur le site HTTPS. – Tim