HTTP响应标头正则表达式

时间:2015-04-15 03:01:22

标签: regex http-headers jmeter httpresponse

我曾计划使用Jmeter Regex Extractor在HTTP响应标头中获取会话ID。这是HTTP标头的示例:

HTTP/1.1 200 OK
x-powered-by: yoke
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST,GET,DELETE,PUT
Access-Control-Allow-Headers: X-Requested-With,jsessionid,Origin,Accept,Content-Type
Access-Control-Expose-Headers: Content-Size,Message,Total-Pages,Total-Count,Current-Page,jsessionid,Origin,Total-Outstanding,Content-Range
content-type: application/json
jsessionid: 10838d69-f9ac-4c70-b1f7-9447a7a6a463
Content-Length: 106

我需要得到的是:

10838d69-f9ac-4c70-b1f7-9447a7a6a463

我使用此REGEX:

jsessionid: [^\n]+

但我明白了:

jsessionid: 10838d69-f9ac-4c70-b1f7-9447a7a6a463
你可以帮帮我吗? 谢谢

最诚挚的问候, Stefio

3 个答案:

答案 0 :(得分:1)

查看lookaround的正则表达式,对于你的特殊情况,它应该是正面的正则表达式。这种工作非常有效,但未经测试:

(?<=jsessionid:\s).+

(?<=jsessionid:\s)部分意味着匹配jsessionid:但不包含在结果中

答案 1 :(得分:0)

使用正则表达式

jsessionid: ([^\n]+)

和模板

$1$

您的问题与正则表达式分组有关。组0是整个匹配,这是Jmeter Regex Extractor的默认值。第1组是第一组括号内的正则表达式匹配的。模板$ 1 $表示使用组1的内容作为结果。正则表达式分组可能会变得复杂得多,因此如果要从正则表达式中获取多个值,请阅读教程。 Jmeter Regex Extractor user manual

答案 2 :(得分:0)

JSESSIONID基本上是一个cookie,所以我认为你不需要用正则表达式来提取它。

我可以想到你可能需要它的2个场景:

  1. 您需要将下一个请求作为标题
  2. 传递
  3. 你需要其他东西的价值
  4. 在这两种情况下,您都可以使用HTTP Cookie Manager

    • 对于第一个选项:它自动处理cookie
    • 对于第二个选项:将CookieManager.save.cookies属性设置为true,您应该能够以${COOKIE_JSESSIONID}
    • 的形式访问Cookie值