【发布时间】:2018-03-14 07:13:59
【问题描述】:
我们在设置 Zabbix Web 场景时遇到了一点问题,我们会向您寻求帮助。我们配置了 Zabbix 的 web 场景来检查添加产品到我们 eshop 上的购物车。
场景作品如下
1) Zabbix 调用 eshop.com/checkout/cart/add/product_id/XXX
2) E-shop 创建一个会话,将产品 XXX 添加到购物车中,并将重定向返回到 eshop.com/checkout/cart 并带有“Set-Cookie: frontend=YYY”以在下一个请求中识别会话
3) Zabbix 使用“Cookie: frontend=YYY”跟随重定向到 eshop.com/checkout/cart
4) Eshop 返回购物车页面的 HTML
5) Zabbix 检查购物车的 HTML 并说“是的,该产品已添加”或“否,该产品未添加”。
仅此而已。不幸的是,如果 Eshop 收到没有“Cookie”的请求,则会将用户重定向到“您已禁用 Cookie。此站点需要 Cookie”页面,这会破坏第 2 步。Uff。我们通过在 Web 场景的设置中添加 cookie “some_cookie_to_avoid_no_cookie_page” 解决了这个问题(见截图)
乍一看效果很好,但有一个问题。在第 3 步中,zabbix 将来自 Eshop 的 cookie 与来自场景设置的 cookie 连接起来,并使用逗号 (,) 代替 (;) 作为分隔符。因此,Zabbix 发送
Cookie: frontend=YYY, some_cookie_to_avoid_no_cookie_page=1
,但 Eshop 期望
Cookie: frontend=YYY; some_cookie_to_avoid_no_cookie_page=1
由于这个分隔符使 Eshop 无法正确识别 cookie“前端”,它不会找到会话并将空购物车的 HTML 返回给 Zabbix。这就是问题。
目前,我们从场景设置中删除了“some_cookie_to_avoid_no_cookie_page”,并禁用了重定向到“您已禁用 Cookie。此站点需要 Cookie”,但这只是我们的权衡。我的问题是:有更好的解决方案吗?例如:
- 告诉 Zabbix 通过 ';' 加入 cookie
- 告诉 Zabbix 仅在没有其他 cookie 存在时发送“some_cookie_to_avoid_no_cookie_page”(不幸的是,步骤 1 到 5 是原子的,我们无法让 Zabbix 仅在步骤 2 中发送“some_cookie_to_avoid_no_cookie_page” - 可能将场景分为两个步骤 1-2 和 3-5,但它需要记住 cookie 前端 - 有可能吗?
- 其他一些解决方案...
非常感谢。 Jirka Ch.
【问题讨论】:
-
我遇到了同样的问题并为此记录了一个问题:support.zabbix.com/browse/ZBX-15479。