-1
votes

Cookie supprimé après la création?

Je crée une session, après la création de la session / cookie, il disparaît immédiatement

session, err := r.Cookie("session-id")

if err != nil {
session = &http.Cookie{
                    Name:   "session-id",
                    Value:  sessionID.String(), //uuid
                    MaxAge: 0,
                }
http.SetCookie(w, session)
}


0 commentaires

3 Réponses :


-3
votes

Réglage de la maxe à 0 signifie supprimer immédiatement le cookie.

Utilisez -1 pour stocker le cookie jusqu'à la sortie du navigateur.


8 commentaires

Les valeurs zéro et négative expirent le cookie immédiatement.


Je pense que le régler à -1 signifie que la suppression et le régler à 0 est une quantité de temps infinie. Quand j'utilise -1, le cookie n'est même pas créé.


@Stormasdg: Non, lisez The Docs . 0 et <0 ont le même comportement. Il en va de même pour les implémentations Alll, selon RFC 6265 .


@Flimzy, vous ne pouvez pas la mettre à infini?


@Stormasdg: Non, Vous ne pouvez pas .


@Flimzy, 0 et <0 ont un comportement différent par les documents que vous indiquez. Lorsque cookie.maxage == 0 , le paramètre Max-Âge est omis de l'en-tête de réponse. Les clients manipulent des cookies sans expiration ni paramètre max-Âge en tant que Session Cookie . Lorsque cookie.maxage <0 , le paramètre Max-Âge est écrit sur l'en-tête de réponse sous la forme de 0. Les clients suppriment des cookies supérieurs ou égaux à la max-âge du cookie.


La fonctionnalité réelle est l'inverse de ce qui est décrit dans cette réponse. Définir Cookie.Maxage à -1 amène le client à supprimer le cookie. Réglage du cooke.Maxage à 0 crée un cookie avec la durée de vie de la session de navigateur du client.


@ Ceriselimón: Oh, tu as raison. J'ai mal interprété équivalent 'max-âge: 0' comme équivalent 'maxage = 0'



1
votes

Selon MDN : < / p>

MAX-AGE: Nombre de secondes jusqu'à ce que le cookie expire. Un nombre zéro ou négatif expirera immédiatement le cookie

Lorsque vous regardez le code source du Setcookie FUNC, qui appelle la méthode String Cookies ' , nous pouvons voir la ligne 208 que votre biscuit de 0 ne sera pas écrit à la demande - votre cookie devrait être accepté.

Il peut y avoir d'autres facteurs qui pourraient faire valider ce cookie à partir du côté de l'agent utilisateur; Le côté serveur semble aller bien. Que se passe-t-il lorsque vous essayez un navigateur différent (E.G. Firefox)?


1 commentaires

C'est étrange, quand je l'ai essayé à bord, cela fonctionnait. Le cookie n'est pas retiré immédiatement



2
votes

Ceci est un problème car je ne peux pas détecter le cookie lorsque vous allez à un autre chemin.

Si le paramètre de chemin n'est pas défini dans l'en-tête Set Cookie Response, le client définit le chemin de la cookie sur le chemin de la requête. Les clients n'envoient qu'un cookie sur le serveur lorsque le chemin de la cookie est un préfixe de chemin du chemin de la requête.

Pour créer un cookie disponible sur tous les chemins, définissez le chemin d'accès à "/".< / p> < Pré> xxx

(car la valeur zéro pour un entier est 0, il n'est pas nécessaire de spécifier la valeur maximale).


0 commentaires