HTTP 响应 Header 正则表达式
HTTP Response Header Regex
我曾计划使用 Jmeter Regex Extractor 在 HTTP 响应 Header 中获取 Session ID。这是 HTTP Header 的示例:
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
我使用这个正则表达式:
jsessionid: [^\n]+
但我得到:
jsessionid: 10838d69-f9ac-4c70-b1f7-9447a7a6a463
你能帮我吗?
谢谢
此致,
斯特菲奥
查看 lookaround
的正则表达式,对于您的特定情况,它会是 lookbehind 正则表达式。这完全可行,但未经测试:
(?<=jsessionid:\s).+
(?<=jsessionid:\s)
部分表示字面匹配 jsessionid:
但不将其包含在结果中
使用正则表达式
jsessionid: ([^\n]+)
和模板
$
您的问题与正则表达式分组有关。 Group 0是整个匹配,这是Jmeter Regex Extractor默认的。第 1 组是第一组括号内的正则表达式匹配的内容。模板 $1$ 表示使用第 1 组的内容作为结果。正则表达式分组可能会变得更加复杂,因此如果您想从正则表达式中获取多个值,请阅读教程。
Jmeter Regex Extractor user manual
JSESSIONID 基本上是一个 cookie,所以我认为您不需要使用正则表达式来提取它。
我能想到您可能需要它的 2 种情况:
- 您需要将其作为 header
与下一个请求一起传递
- 你需要它的其他价值
在这两种情况下,您都可以使用 HTTP Cookie Manager
- 对于第一个选项:它会自动处理 cookie
- 对于第二个选项:给定
CookieManager.save.cookies
属性 设置为 true
您应该能够访问 ${COOKIE_JSESSIONID}
的 cookie 值
我曾计划使用 Jmeter Regex Extractor 在 HTTP 响应 Header 中获取 Session ID。这是 HTTP Header 的示例:
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
我使用这个正则表达式:
jsessionid: [^\n]+
但我得到:
jsessionid: 10838d69-f9ac-4c70-b1f7-9447a7a6a463
你能帮我吗? 谢谢
此致, 斯特菲奥
查看 lookaround
的正则表达式,对于您的特定情况,它会是 lookbehind 正则表达式。这完全可行,但未经测试:
(?<=jsessionid:\s).+
(?<=jsessionid:\s)
部分表示字面匹配 jsessionid:
但不将其包含在结果中
使用正则表达式
jsessionid: ([^\n]+)
和模板
$
您的问题与正则表达式分组有关。 Group 0是整个匹配,这是Jmeter Regex Extractor默认的。第 1 组是第一组括号内的正则表达式匹配的内容。模板 $1$ 表示使用第 1 组的内容作为结果。正则表达式分组可能会变得更加复杂,因此如果您想从正则表达式中获取多个值,请阅读教程。 Jmeter Regex Extractor user manual
JSESSIONID 基本上是一个 cookie,所以我认为您不需要使用正则表达式来提取它。
我能想到您可能需要它的 2 种情况:
- 您需要将其作为 header 与下一个请求一起传递
- 你需要它的其他价值
在这两种情况下,您都可以使用 HTTP Cookie Manager
- 对于第一个选项:它会自动处理 cookie
- 对于第二个选项:给定
CookieManager.save.cookies
属性 设置为true
您应该能够访问${COOKIE_JSESSIONID}
的 cookie 值