如何在JMeter中提取Cookie数据并应用于.NET应用后续请求
具体操作步骤
这里提供两种实现方案,优先推荐第一种自动处理的方案,操作成本更低,适配绝大多数.NET Framework 4.5站点的Cookie处理需求。
方案一:使用HTTP Cookie管理器自动管理Cookie
- 第一步:在测试计划节点右键点击,依次选择「添加 → 配置元件 → HTTP Cookie管理器」
- 第二步:打开Cookie管理器配置页,勾选每次迭代清除Cookie(多用户循环压测时必须开启,单用户调试可暂时关闭),Cookie策略选择
default或compatibility即可,无需额外填其他参数 - 第三步:将登录请求放在所有业务请求的最前面,正常配置登录接口的账号、密码等入参即可。只要登录接口返回的
Set-Cookie响应头符合HTTP规范,JMeter会自动存储.ASPXAuth、AuthToken、SessionID这类Cookie值,后续同域名下的所有请求会自动带上这些Cookie,不需要给后续请求手动加参数
注意:如果你的站点跨子域名调用接口,需要额外勾选Cookie管理器里的允许跨域使用Cookie选项
方案二:手动提取Cookie(仅当Cookie管理器不生效时使用,比如站点有自定义Cookie规则)
- 第一步:在登录请求节点右键点击,依次选择「添加 → 后置处理器 → 正则表达式提取器」,需要提取几个Cookie就对应添加几个提取器,也可以用一个提取器匹配多个值
- 第二步:以提取.ASPXAuth为例,提取器配置如下:
- 引用名称:
ASPXAUTH(后续调用时的变量名,可自定义) - 正则表达式:
Set-Cookie:\.ASPXAUTH=(.+?); - 模板:
$1$ - 匹配数字:
1 - 要检查的响应字段:选择响应头
- 引用名称:
- 第三步:按照同样逻辑分别提取另外两个Cookie,对应正则参考如下(如果实际响应的Cookie名有差异,按实际值调整即可):
- AuthToken:
Set-Cookie:\s*AuthToken=(.+?); - SessionID:
Set-Cookie:\s*ASP.NET_SessionId=(.+?);
- AuthToken:
- 第四步:后续请求需要使用对应Cookie值时,直接调用变量即可,格式为
${ASPXAUTH}、${AuthToken}、${SESSIONID}
调试技巧:可以在登录请求下添加调试后置处理器,运行后查看提取的变量值是否正确,确认无误后再运行后续业务流程
内容的提问来源于stack exchange,提问作者Archana
相关产品推荐
相关产品推荐

