web-dev-qa-db-fra.com

Chrome cookie localhost non défini

J'ai une application ASP.net qui utilise un cookie pour stocker la langue sélectionnée par l'utilisateur . Tout fonctionne correctement sauf lorsque je suis sur localhost . Remplacer localhost par 127.0.0.1 le fait fonctionner à nouveau ... pourquoi?

J'ai vu les restrictions voulues pour classer: //, mais je ne trouve aucune référence à la restriction voulue pour localhost.

Ce que je ne comprends pas vraiment, c'est pourquoi les cookies de session ASP.net (ASP.NET_SessionId) et d'authentification de formulaires ASP.net (.FSAUTHSSO) sont correctement définis pour le domaine localhost mais que mes cookies ne sont pas… pourquoi?!

J'ai déjà googlé beaucoup et rien ne fonctionne:

  • Définition de l'indicateur de ligne de commande de Chrome --enable-file-cookies [NE FAUT PASWORK]
  • Paramétrer le cookie sur HttpOnly [N'EST PAS IMPORTANT]
  • Modification de l'expiration en session ou en date ... [N'importe pas]
  • Changer le chemin du cookie en racine (/) ou en quelque chose d'autre [N'importe pas]

Alors qu'importe? :)

Et pourquoi les cookies ASP.net peuvent-ils être configurés et pas les miens? Quelle est la différence?

Dernière chose à signaler, cela se produit également sur IE mais fonctionne correctement sous FF.

Merci!

Alex

43
AlexCode

Les cookies sont conçus pour le deuxième niveau et vers le bas. Les domaines de premier niveau ne fonctionneront pas. Utilisez plutôt l'adresse http://127.0.0.1 (comme vous l'avez mentionné) ou modifiez votre fichier hosts pour mapper une autre URL avec un TLD sur l'adresse 127.0.0.1, par exemple: 

yoursite.tld   127.0.0.1

Je viens de faire des recherches plus loin; a trouvé cette réponse: Cookies sur localhost avec domaine explicite

29
krslynx

s'il vous plaît essayez de mettre cookie.Domain = null sur localhost et utilisez le nom de domaine autrement.

19
Ehab

Bonnes nouvelles. La définition de cookies sur localhost est désormais possible sur Chrome à partir de la compilation de Canary: https://code.google.com/p/chromium/issues/detail?id=551906

5
agektmr

Je sais que c'est peut-être idiot, mais il m'est arrivé de prendre une application asp.net mvc où je ne pouvais pas les faire travailler localement. Enfin, un autre développeur a signalé une entrée dans le fichier web.config qui avait été ajoutée récemment.

<httpCookies httpOnlyCookies="true" requireSSL="true" />

Paramétrer le requireSSL sur "false" localement. N'oubliez pas d'appliquer les transformations à travers les environnements. J'espère que ça aide. 

1
user906573

J'ai rencontré un problème avec Chrome: aucun cookie dont la date d'expiration était fixée à 2 semaines - il s'agissait du cookie d'authentification (.AspNet.ApplicationCookie), de sorte que j'étais redirigé en permanence vers la page de connexion. Ce problème ne s'est pas produit dans les autres navigateurs que j'ai essayés.

J'ai fini par expérimenter avec des cookies personnalisés pour déterminer que Chrome pensait que la date actuelle était plus tôt qu'elle était en réalité - et que, par exemple, j'ai mis un cookie qui a expiré dans un an aujourd'hui (2 avr. 2017) paramétrez ce cookie pour qu'il expire le 1er janvier 2017! Cela expliquerait alors pourquoi un cookie avec une expiration de 2 semaines a déjà été considéré comme expiré car le chrome supprimait 3 mois de l’expiration réelle et qu’il était donc considéré comme déjà expiré.

Le redémarrage par Chrome n'a pas résolu ce problème - J'ai redémarré le PC à ce stade et cela a corrigé le bogue. Je devrais également noter que cela ne s'est produit que pour localhost - apparemment, tous les autres sites étaient ok. 

1
wal

Je viens d'avoir le même problème dans Chrome. J'ai eu cookie.Secure = true. Se débarrasser de cela pour localhost a résolu le problème pour moi. 

(Avait exactement le même problème, FWIW: fonctionnait dans FF, pas IE ou Chrome)

1
Clever Human

Dans ma situation, j’exécutais une application de base de pages de rasoir asp.net utilisant iisexpress (localhost: ####) et j’ai rencontré ce problème avec Chrome. Mon correctif consistait à vérifier que les paramètres iis dans le fichier Properties\launchSettings.json avaient un numéro autre que 0 pour sslPort (44344). Lorsque sslPort est défini sur 0, iisexpress ne sera pas exécuté, mais ssl. En le changeant, 44344 lance ensuite l'application à l'aide de SSL dans iisexpress. Alternativement, aller des propriétés du projet dans Visual Studio et l'onglet Débogage pour activer le protocole SSL fera la même modification pour launchsettings.json Par exemple

"iisSettings": {
  "windowsAuthentication": false,
  "anonymousAuthentication": true,
  "iisExpress": {
    "applicationUrl": "http://localhost:29025/",
    "sslPort": 44344
  }
},
1
Patrick Neborg

Il y a un problème sur Chromium ouvert depuis 2011 , selon lequel si vous définissez explicitement le domaine en tant que 'localhost', vous devez le définir en tant que false pour que cela fonctionne ou utilisez le paramètre 127.0.0.1.

0
Bruno Peres