2010-02-23 7 views
33

Comment paramétrer un cookie en PHP lisible en HTTP et HTTPS?Cookie via HTTP et HTTPS en PHP

Si ce n'est pas possible, que peut-on faire? Définir deux cookies?

+0

Quel navigateur utilisez-vous? Je remarque que dans IE9 j'ai un cookie en HTTPS et HTTP avec la même clé mais chacun a une valeur différente. Même lorsque le cookie n'est pas un cookie sécurisé. –

+0

Lorsque j'ai posé cette question, j'ai cherché des solutions qui fonctionnent sur les principaux navigateurs. Et oui, la solution présentée a fonctionné. –

+0

Utilisez simplement le même domaine (ou un domaine parent approprié) et les cookies seront accessibles via HTTP et HTTPS par défaut. Si vous voulez être explicite, mettez $ cookie-> setHttpOnly (false) 'avec https://github.com/delight-im/PHP-Cookie – caw

Répondre

69

Par défaut, un cookie peut être lu par http et https à la même URL. Toutefois, un serveur peut éventuellement spécifier l'indicateur 'secure' pendant la définition d'un cookie, ce qui indique au navigateur de ne l'envoyer que sur un canal sécurisé, tel qu'une connexion SSL.

Dans ce cas, le cookie ne sera envoyé que par https. Un cookie non marqué comme sécurisé sera envoyé via http et https.

+5

Explication essentielle.^_^ –

+0

Un cookie n'est-il pas marqué comme sécurisé, sécurisé lorsqu'il est envoyé par https? (J'imagine que la réponse est oui) – Oversteer

+0

@Oversteer oui, il est sécurisé sur https. Le problème est que si un mélange de http et https est utilisé, le cookie n'est sécurisé qu'une partie du temps. –

26

En supposant que votre nom de domaine reste le même à l'exception du type de ressource, les cookies en PHP (ou n'importe quelle langue) peuvent être lus à partir de HTTP et de HTTPS.

.: par exemple

http://www.example.com 
https://www.example.com 

Dans cet exemple, les cookies seront lisibles les uns des autres.

+0

vous avez oublié de mettre l'exemple –

+4

L'exemple est juste là. Je démontre que la même URL avec juste l'identifiant de ressource modifié utilisera toujours les mêmes cookies. Les domaines de cookies sont basés sur le nom DNS et ne connaissent pas le protocole. Pour clarifier, vous n'avez pas besoin de faire quelque chose de spécial pour recevoir l'effet désiré. Voir les spécifications des cookies pour plus d'informations: http://curl.haxx.se/rfc/cookie_spec.html –