2011-01-13 3 views
1

Lorsqu'un utilisateur visite www.example.com pour la première fois, comment puis-je détecter si les cookies du navigateur client sont activés et si oui, envoyer le cookie au client sans avoir recours à l'envoi de demande (s) de redirection (requête HTTP 302) ? Si la redirection doit être faite alors quelle est la meilleure façon d'envoyer des cookies sans faire plusieurs redirections ou des redirections hostiles moteur de recherche bot? Mon application java doit créer un compte basé sur un cookie très rapidement le premier visiteur va à example.com. Après que les visites ultérieures reconnaissent l'utilisateur basé sur ce cookie.Quelle est la meilleure façon d'envoyer et de détecter des cookies dans une application java?

Cette solution ne doit pas être basée sur Javascript, car il doit encore travailler si Javascript est désactivé.

Répondre

2

Tout d'abord, il n'est pas possible de dire (définitivement) si un client supporte les cookies ou pas avant d'en avoir défini un. Et si vous faites ce côté serveur, car les cookies sont envoyés dans le cadre de la requête HTTP, vous ont de publier une sorte de redirection pour faire cette vérification:

client     server 
1a. GET index.html ----> 
1b.   <------------ sets a cookie, redirect to index.html?foo=bar 
2. GET index.html?foo=bar --> 

utilisant Javascript ne vous permet contourner cela, comme vous pouvez au moins demander si le cookie a été placé sur le côté client sans demander au client de faire une autre demande - mais c'est Javascript, comme vous le dites.

Notez que ce type de vérification n'est pas très robuste; il ne vérifie pas vraiment que les cookies resteront utiles (par exemple, un programme anti-spyware peut effacer les cookies toutes les 30 minutes). Il ne valide pas même que vous serez en mesure de régler le prochain cookie (surtout si elle est un sous-domaine, ou l'utilisateur peut avoir demandé à l'UA pour demander chaque cookie, donc juste parce que ce cookie est accepté doesn ne veut pas dire que le prochain sera). Et la prochaine fois que l'utilisateur se connecte il peut être d'un navigateur différent (avec des paramètres différents), ou ils ont changé leurs paramètres de sécurité sur celui-ci, etc

Vraiment, je penserais à cela de la même manière que validation de formulaire côté client - il est bon d'être en mesure d'avertir vos visiteurs quand ils essaient quelque chose qui ne va tout simplement pas fonctionner, mais vous ne pouvez pas vraiment compter sur que c'est correct. Et dans ce contexte votre dernière phrase est un peu inquiétante - puisque vous le dites a besoin de pour travailler. Quelles sont les conséquences si ce test est incorrect (vous pensez que vous pouvez créer des cookies, mais vous ne pouvez pas le faire)? Je ne dis pas que votre site doit fonctionner sans cookies, juste que vous devez réaliser que vos contrôles peuvent donner des faux positifs, et vous devez être conscient de cela. Donc, dans ce contexte, je dirais que est préférable de faire le check-in en Javascript; Si quelqu'un a des cookies JS et désactivés, ils ne pourront pas interagir avec la majorité des sites qui ont une sorte de connexion. Lorsque vous recevez une demande sans cookies, vous devez renvoyer un "Ooops, il semble que vous ayez des cookies désactivés page" de toute façon, donc il n'est guère génial si la vérification initiale a été ignorée.

+0

Merci pour l'aperçu de ce problème. Dans mon application, il y a un lien qui génère un contenu dynamique quand on clique dessus. Chaque fois que ce même lien est cliqué, un contenu dynamique différent est généré. Si les cookies UA sont activés, je n'autorise qu'un certain nombre de clics sur ce lien en fonction du suivi de l'utilisateur via un cookie. Si cookie est désactivé (ce qui dans la plupart des cas signifie qu'il s'agit d'un moteur de recherche parce que la plupart des cookies sont activés), j'autorise un nombre illimité de clics sur ce lien. cet UA. – ace

+0

Le problème que je suis confronté est de détecter rapidement une seule fois si les cookies sont activés ou non et de devoir détecter à chaque requête si les cookies sont désactivés ce qui est terrible pour le référencement (car les moteurs de recherche ont des cookies désactivés). – ace

Questions connexes