netscaler检查cookie是否存在

时间:2016-08-16 22:53:45

标签: netscaler

我正在尝试使用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和语句的结尾而不是!,但没有运气。

我测试了使用

读取cookie
HTTP.REQ.COOKIE.LENGTH < or > some arbitray value 

我可以看到它被正确评估并且逻辑按预期工作。根据文档HTTP.REQ.COOKIE返回带有HTTP Cookie标头内容的名称/值列表,因此如果找到cookie名称,我希望.CONTAINS评估为true。情况似乎并非如此。

2 个答案:

答案 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