当前位置: 首页 > 知识库问答 >
问题:

Zabbix通过逗号而不是分号连接Cookie

张积厚
2023-03-14

我们在Zabbix Web场景设置方面有一点问题,请您提供帮助。我们将Zabbix的web场景配置为在我们的eshop上检查将产品添加到购物车中的情况。

下面是一个场景

1) Zabbix打电话给eshop。com/checkout/cart/add/product\u id/XXX

2) E-shop创建一个会话,将产品XXX添加到购物车中,并将重定向返回到eshop。com/checkout/cart,带有“Set Cookie:frontend=YYY”,用于在下一个请求中标识会话

3)Zabbix跟随重定向到eshop.com/checkout/cartCookie:前端=YYY

4) Eshop返回购物车页面的HTML

5) Zabbix检查购物车的HTML并说“是,产品已添加”或“否,产品未添加”。

就这些。不幸的是,如果Eshop收到一个没有“Cookie”的请求,然后将用户重定向到一个页面“You is disabled Cookie.This site need Cookie”,这会中断步骤2。不明飞行物。我们通过在web场景的设置中添加cookie“some\u cookie\u to\u avoid\u no\u cookie\u页面”来解决这个问题(参见屏幕截图)

乍一看效果不错,但有一个陷阱。在步骤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“frontend”,因此它将找不到会话并将空购物车的HTML返回给Zabbix。这就是问题所在。

目前,我们从场景设置中删除了“一些要避免的cookie页面”,并禁用了重定向到“您已禁用cookie。此站点需要cookie”,但这只是我们的一种折衷。我的问题是:有更好的解决方案吗?例如:

  • 告诉Zabbix通过“;”加入cookies
  • 告诉Zabbix仅在没有其他cookie的情况下发送“some_cookie_to_avoid_no_cookie_page”(不幸的是,步骤1至5是原子步骤,我们无法向Zabbix发送“some_cookie_to_avoid_no_cookie_page”仅在步骤2中-可能将场景分为两个步骤1-2和3-5,但需要记住cookie前端-这是可能的?
  • 其他解决方案

非常感谢。吉尔卡。

共有1个答案

朱季
2023-03-14

根据https://www.ietf.org/rfc/rfc2109.txt ,第9页,服务器应接受逗号作为cookie分隔符:

注意:为了向后兼容,Cookie头中的分隔符是分号(;)处处服务器还应接受逗号(,)作为cookie值之间的分隔符,以实现将来的兼容性。

尽管RFC已有20多年的历史,但仍然有一些服务器只支持分号。请考虑为Zabbix创建一个特性请求,以获得cookie分隔符的选项。

 类似资料:
  • CSV文件通常是如何生成的?用逗号还是分号?你有什么建议吗?

  • 假设我有一个Unix shell变量,如下所示 我想使用for循环提取所有值(、和),并将每个值传递到过程中。 该脚本应该允许从< code>$variable中提取任意数量的逗号分隔值。

  • 问题内容: 我有一个类似于以下内容的字符串: 我想创建一个与逗号匹配的正则表达式,但只匹配不在括号内的逗号(在上面的示例中,除23和45之后的两个逗号之外,所有其他逗号)。我将如何做(如果使用Java正则表达式会有所不同)? 问题答案: 假定没有嵌套的括号(否则,你不能使用Java Regex来完成此任务,因为不支持递归匹配): 此正则表达式使用否定的超前断言来确保下一个括号(如果有)不是闭合括号

  • 问题内容: 我有一个像 我想把它分成那些字符串 如果我简单地打电话给我,那么在修剪之后我会得到不同的结果,因为在某些字符串中,例如,仍然有一个逗号。但我不想放在方括号中。有解决这个问题的优雅方法吗? 问题答案: 假设和没有嵌套和未转义。您可以使用以下方式进行拆分: 正则演示 如果逗号后面没有非圆括号和,则将匹配逗号,从而忽略和中的逗号。

  • 问题内容: 我正在编写导出功能,我需要将联系人导出到Excel,并且遇到了技术难题-也许我的SQL技能的差距更接近事实了。;) 这是场景:我在数据库中有一堆联系人。每个联系人可以具有许多不同的角色,例如,一个联系人可以是C#开发人员和DBA,也可以是DBA和IT经理。它们分为三个表,如下所示: 不太难遵循。有一组联系人和一组角色。这些由相应ID上的ContactRole表连接。 导出联系人时,我需

  • 问题内容: 我的表结构如下所示, “邮件” 列可以包含多个由逗号连接的电子邮件 数据(整数) 邮件(varchar(200)) [数据] [邮件] 1引用m1 @ gmail.com,m2 @ hotmail.com 2引用m2 @ hotmail.com,m3 @ test.com &我需要生成如下的报告,对每封电子邮件的每一行进行计数 [邮件] 听听听听听听听听听听听听听听听听听 [COUNT