web-dev-qa-db-fra.com

Envoi de cookies du navigateur lors d'une redirection 302

Y a-t-il des problèmes avec le renvoi d'un cookie lors d'une redirection 302? Par exemple, si je crée un cookie de retour à l'URL et redirige l'utilisateur dans la même réponse, un navigateur (moderne) ignorera-t-il le cookie?

67
Abdullah Jibaly

La plupart des navigateurs acceptent les cookies sur les redirections 302. J'étais bien sûr de cela, mais j'ai fait une petite recherche. Pas tous les navigateurs modernes . Lien d'archive Internet d'un serveur désormais supprimé/mort/ Microsoft connect Q/A sur Silverlight Client HTTP La pile ignore Set-Cookie sur les réponses de redirection 302 (2010)

Je pense que nous avons maintenant un remplacement pour IE6 et ce sont les navigateurs Windows Mobile ...

32
regilero

Selon cet article de blog: http://blog.dubbelboer.com/2012/11/25/302-cookie.html tous les principaux navigateurs, IE (6 , 7, 8, 9, 10), FF (17), Safari (6.0.2), Opera (12.11) à la fois sur Windows et Mac, définissez des cookies sur les redirections. Cela est vrai pour les redirections 301 et 302.

44
gavenkoa

n avis (pour sauver la vie du développeur):

IE et Edge ignorent Set-Cookie dans la réponse de redirection lorsque le domaine du cookie est localhost .

Solution:

Utilisez 127.0.0.1 au lieu de localhost .

27
Michal Maťovčík

Ici est le bogue Chromium pour ce problème (Set-cookie ignoré pour la réponse HTTP avec le statut 302).

14
llambda

C'est une approche très désapprouvée, mais si vous ne voulez vraiment pas vous fier au comportement du navigateur 30x avec cookie, vous pouvez utiliser un code HTML meta http-equiv="refresh" "rediriger" lors de la configuration du cookie. Par exemple, en PHP:

<?php
    ...
    setcookie("cookie", "value", ...);
    url="page.php";
?>
<html>
<head><meta http-equiv="refresh" content=1;url="<?=$url?>"></head>
<body><a href="<?=$url?>">Continue...</a></body>
</html>

Le serveur enverra Set-Cookie avec un 200 au lieu d'une redirection 300x appropriée, donc le navigateur stockera le cookie, puis effectuera la "redirection". Le <a> le lien est une solution de rechange au cas où le navigateur n'effectuerait pas la méta-actualisation.

0
MestreLion