Je travaille localement sur deux "domaines". J'ai des hôtes virtuels enterprise.local et application.local sur ma machine et j'ai besoin de configurer un cookie de domaine pour "local" ou ".local". Cependant, j'ai de la difficulté à configurer correctement le cookie. En application.local, j'ai ceci:Problème Réglage Cookie w/PHP
setcookie('iPlanetDirectoryPro', trim($token_id), '0', '/', '.local');
header('Location: /adcom-sso');
J'ai aussi essayé ceci:
header('Set-Cookie: iPlanetDirectoryPro=' . trim($token_id) . '; path=/');
header('Location: /adcom-sso');
En utilisant setcookie()
, aucun cookie est toujours défini. En utilisant l'en-tête Set-Cookie
, le cookie est. J'ai enlevé la redirection des deux et le résultat ne change jamais. Cela fonctionne pour Set-Cookie
, mais pas pour setcookie()
. Ce serait bien que je n'ai pas vraiment une préférence quelle solution je l'utilise, mais dans la solution Set-Cookie
, dès que j'ajouter un domaine tout se détraque:
header('Set-Cookie: iPlanetDirectoryPro=' . trim($token_id) . '; path=/; domain=local');
Dès que j'ajouter dans la valeur de domaine, je reçois une erreur d'en-tête:
Header may not contain more than a single header, new line detected.
J'ai essayé la valeur de domaine comme « local » et « .local ». Le comportement ne change pas.
J'ai rarement besoin d'accéder explicitement aux cookies, donc j'espère juste manquer quelque chose d'évident, mais je ne le vois certainement pas. Toute opinion serait très appréciée.
MISE À JOUR: Je pense que je l'ai rétréci un peu plus loin. Il semble que les deux façons fonctionneront tant que je n'inclut pas une valeur de domaine. Pourrait-il y avoir un problème avec l'utilisation de "local" ou ".local" en tant que domaine spécifique du cookie?
J'ai vraiment essayé tous ceux-là. À l'origine, je ne coupais pas du tout. J'ai aussi essayé setrawcookie(), même si je ne l'ai pas inclus ici pour des raisons de simplicité. Dans la solution Set-Cookie, j'ai aussi essayé manuellement urlencode() 'the $ token_id. J'ai juste essayé l'idée de preg_replace() et cela n'a rien changé. Merci. –
"L'en-tête ne peut pas contenir ..." ne se déclenchera * pas * sauf si vous avez un saut de ligne. J'ai regardé le code source de PHP ('sapi_header_op()'). Vous avez certainement un problème de saut de ligne avec cette erreur. – Inshallah
Ce que j'ai finalement trouvé correspond à votre édition. Dès que j'ai essayé ".local.com" tout s'est bien passé. Dans ce cas, le problème était dû à mon environnement de développement où je garde mes "domaines" simples. Il ne devrait jamais être un problème dans la pile vers les environnements de production. Merci de votre aide. –