我正在尝试使用Citrix Netscaler检查是否存在特定的Cookie。看起来它应该是直截了当的,但到目前为止我还没有成功。
具体来说,我想在响应者策略中检查cookie是否存在,如果找不到cookie,则将用户重定向到特定页面。然后,该页面上的JavaScript脚本将创建cookie,以便在下次访问时不会触发重定向。我们的想法是将用户重定向到带有消息的页面,但只在cookie到期时重定向一次。
我很满意设置响应者策略和操作,但还没有能够根据需要使cookie检查工作。我可以在Firefox开发人员视图中看到cookie是按预期创建的。
我正在使用版本为10.5的Netscaler MPX
我进行了广泛的搜索,但没有找到有效的答案,或者至少我明白并且可以申请。我还搜索了Citrix Netscaler社区并阅读了NS文档。
到目前为止,我能够提出的最接近的方法是
!HTTP.REQ.COOKIE.CONTAINS("myCookie")
我预期会看到cookie的存在而不会因!
而触发策略。我尝试使用.NOT
和语句的结尾而不是!
,但没有运气。
我测试了使用
读取cookieHTTP.REQ.COOKIE.LENGTH < or > some arbitray value
我可以看到它被正确评估并且逻辑按预期工作。根据文档HTTP.REQ.COOKIE
返回带有HTTP Cookie标头内容的名称/值列表,因此如果找到cookie名称,我希望.CONTAINS
评估为true。情况似乎并非如此。
答案 0 :(得分:2)
我知道现在答复已经太迟了。但这可以帮助进行类似查询的人。
HTTP.REQ.COOKIE.NAMES.CONTAINS_ELEMENT("myCookie").NOT
是您要查找的表达式。如果不存在Cookie,则返回true。
HTTP.REQ.COOKIE.NAMES
是HTTP请求中存在的cookie名称的列表。
如果存在mycookie,则HTTP.REQ.COOKIE.NAMES.CONTAINS_ELEMENT("myCookie")
返回true。将执行完全字符串匹配(EQ)而不是模式匹配(CONTAINS)。
答案 1 :(得分:0)
我认为最接近的是检查该cookie的值的长度。尝试使用
HTTP.REQ.HEADER(\"myCookie\").LENGTH >1