2009-10-02 6 views
2

Le client a un site sur a.url.com. Le client crée un cookie avec l'hôte comme ".url.com" et le chemin comme "/". Le client nous redirige sur b.url.com. Le client a un problème de codage qui nous oblige à supprimer le cookie (longue histoire).Problèmes lors de l'écrasement d'un cookie

Le code suivant ne règle pas du tout l'expiration dans nos environnements de test ou de production mais fonctionne correctement localement.

if (Request.Cookies["cookie"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("cookie"); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 

Des idées?

+0

Nous avons fait d'autres recherches. Le cookie est en fait créé à partir de www1, www2 ou www3.url.com bien que ce ne soit pas important. Nous avons testé que lorsque nous créons manuellement le cookie et définissons la valeur de l'hôte à la même valeur que notre domaine (comme b.url.com), le code met à jour le cookie. Cela ne fonctionne pas lorsque la valeur de l'hôte est définie sur ".url.com" plus général. Pensées? –

Répondre

5

Nous l'avons compris. Nous avions besoin d'ajouter une ligne de code pour définir manuellement le domaine. Cela prend tout son sens maintenant.

if (Request.Cookies["cookie"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("cookie"); 
    myCookie.Domain = ".url.com"; 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 
+0

C'est exactement ce que j'allais suggérer. – Nirlep

0

est-ce un cookie d'une tierce partie? Si c'est le cas, les paramètres de sécurité par défaut dans IE empêcheront l'écriture de cookie dans la zone "internet" mais cela est autorisé dans votre zone locale.

+0

Non. Ils partagent tous les deux le même domaine, mais ont simplement des enregistrements d'hôtes différents tels que dog.animal.com et cat.animal.com. –

+0

Le cookie est défini par une page qui contient quelques répertoires. Cookie est défini par http://a.url.com/a/b/page. Après la redirection (IP différente et serveur différent), notre code se passe sur http://b.url.com/c/page. Je ne pense pas que ce soit important parce que le chemin des cookies est réglé sur "/" mais qui sait. –

0

Voici un hack. Je poste juste ceci au cas où vous découvrirez que vous ne pouvez pas faire ce que vous voulez en raison d'un problème de sécurité vous empêchant de gérer le problème sur le second site.

Vous pouvez envoyer une demande au premier site pour effacer le cookie via la redirection et faire en sorte que ce site renvoie à nouveau l'utilisateur. Comme je l'ai dit, c'est très hackish (ou je suppose que le marketing l'appellerait fonction de sécurité coopérative inter-site). Heureusement, il existe une meilleure approche, mais au moins vous avez une alternative si aucune autre approche n'est disponible.

0

Si vous ne pouvez pas le faire fonctionner en C#, vous pouvez envisager de voir si vous pouvez manipuler les cookies en javascript.

Gary

Questions connexes