2016-08-16 1 views
0

J'essaie d'utiliser Citrix Netscaler pour vérifier l'existence d'un cookie spécifique. Il semble que ce devrait être simple, mais je n'ai pas eu de succès jusqu'ici. En particulier, je veux vérifier l'existence du cookie dans une politique de répondeur et, si le cookie est introuvable, rediriger l'utilisateur vers une page spécifique. Un script JavaScript sur cette page créera alors le cookie afin que la redirection ne soit pas déclenchée lors de la prochaine visite. L'idée est de rediriger l'utilisateur vers une page avec un message, mais seulement une fois dans l'expiration du cookie.netscaler vérifier si cookie existe

Je suis à l'aise avec la configuration des politiques et des actions du répondeur, mais je n'ai pas réussi à faire fonctionner la vérification des cookies comme je le souhaitais. Je peux voir dans la vue des développeurs Firefox que le cookie est créé comme prévu.

Je travaille avec un NetScaler MPX avec la version 10,5


J'ai cherché longuement, mais pas eu de chance de trouver une réponse qui fonctionne, ou tout au moins que je comprends et peux appliquer. J'ai également recherché sur la communauté Citrix Netscaler et lu la documentation de NS.

Le plus proche approche que j'ai pu arriver à ce jour est quelque chose comme

!HTTP.REQ.COOKIE.CONTAINS("myCookie") 

que je l'avais prévu verrait la présence du cookie et ne se déclenche pas la politique en raison de la !. J'ai essayé avec .NOT et la fin de la déclaration au lieu du ! mais n'a eu aucune chance.

que les je l'ai testé les cookies sont lus à l'aide

HTTP.REQ.COOKIE.LENGTH <or> some arbitray value 

et je peux voir qu'il est correctement évalué et fonctionne de la logique comme prévu. Selon la documentation HTTP.REQ.COOKIE renvoie une liste de nom/valeur avec le contenu de l'en-tête HTTP Cookie, donc je m'attendais à .CONTAINS pour évaluer à vrai si le nom de cookie a été trouvé. Cela ne semble pas être le cas.

+0

Il est difficile d'aider sans aucune idée où vous avez cherché ou ce que vous avez essayé. Fournir des suggestions sans cette information implique d'écrire un tutoriel hors sujet. Veuillez lire "[ask]" et "[mcve]" et nous fournir plus d'informations. –

+0

J'ai identifié le problème et je voulais le mettre à jour ici au cas où quelqu'un d'autre aurait le même problème. La syntaxe correcte pour ce que je voulais faire est HTTP.REQ.COOKIE.NAMES.CONTAINS ("MyCookie"). J'avais essayé cela en vain. Il s'avère que netscaler ne lit pas tous les cookies et que la chaîne COOKIE.NAMES ne contient que les cinq ou six premiers cookies. J'ai suivi cela jusqu'au Web Application Firewall. Avec le WAF désactivé tout fonctionne comme prévu. Je vais regarder dans les paramètres et/ou ouvrir un ticket avec Citrix sur ce problème. J'espère que c'est utile. –

+1

Veuillez formater la question pour plus de lisibilité car elle est actuellement très difficile à lire, ce qui réduit sa qualité et sa valeur. Si vous avez trouvé des informations qui résolvent le problème, créez une réponse et sélectionnez-la lorsque SO expire la période d'attente. Vous n'avez pas besoin de marquer les sections dans votre texte ("Informations supplémentaires"). Vous pouvez utiliser '---' pour une barre horizontale, mais il est préférable d'incorporer l'information là où vous l'auriez initialement. –

Répondre

0

Je pense que le plus proche que vous pouvez obtenir est de vérifier la longueur de la valeur de ce cookie. Essayez d'utiliser

HTTP.REQ.HEADER(\"myCookie\").LENGTH >1