0

我正在尝试使用 Citrix Netscaler 检查特定 cookie 的存在。看起来应该很简单,但到目前为止我还没有成功。

具体来说,我想在响应者策略中检查 cookie 的存在,如果找不到 cookie,则将用户重定向到特定页面。然后,该页面上的 JavaScript 脚本将创建 cookie,以便下次访问时不会触发重定向。这个想法是将用户重定向到带有消息的页面,但仅在 cookie 到期内一次。

我对设置 Responder Policy 和 Actions 感到满意,但无法让 cookie 检查按预期工作。我可以在 Firefox 开发人员视图中看到 cookie 是按预期创建的。

我正在使用 10.5 版的 Netscaler MPX


我进行了广泛的搜索,但没有找到有效的答案,或者至少我理解并且可以应用。我还搜索了 Citrix Netscaler 社区并通读了 NS 文档。

到目前为止我能想出的最接近的方法是

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

我原以为会看到 cookie 的存在,并且不会因为!. 我尝试.NOT了语句的结尾而不是语句的结尾,!但没有运气。

我测试了正在通过使用读取cookies

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

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

4

2 回答 2

2

我知道现在回复太晚了。但这可能会帮助有类似查询的人。

HTTP.REQ.COOKIE.NAMES.CONTAINS_ELEMENT("myCookie").NOT

是您要查找的表达式。如果 cookie 不存在,则返回 true。

HTTP.REQ.COOKIE.NAMES是 HTTP 请求中存在的 cookie 名称列表。 HTTP.REQ.COOKIE.NAMES.CONTAINS_ELEMENT("myCookie")如果 mycookie 存在,则返回 true。执行精确字符串匹配 (EQ) 而不是模式匹配 (CONTAINS)。

于 2020-07-02T13:09:54.217 回答
0

我认为您能得到的最接近的方法是检查该 cookie 的值的长度。尝试使用

HTTP.REQ.HEADER(\"myCookie\").LENGTH >1
于 2016-12-28T21:41:48.683 回答