You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

回放录制脚本时某步出现无效CSRF Token错误,其余步骤正常求助

解决LoadRunner回放脚本时CSRF Token验证失败的问题

看起来你遇到的核心问题是硬编码的CSRF Token在回放阶段失效——毕竟大多数系统的CSRF Token要么是一次性的,要么有时间有效期,录制时的Token到回放时大概率已经过期,而其他步骤刚好在有效期内才没触发报错。下面给你几个针对性的解决方案:

1. 动态关联CSRF Token,替换硬编码值

别再手动写死Token了,从服务器的最新响应中动态提取,确保每次回放都用有效的Token:

步骤1:定位Token的来源

先搞清楚系统是在哪里返回CSRF Token的:

  • 可能是页面的<meta>标签(比如<meta name="_csrf" content="xxx">)
  • 可能是某个接口的响应头(比如X-CSRF-TOKEN字段)
  • 也可能存在于Cookie中(比如XSRF-TOKEN)

步骤2:用web_reg_save_param提取Token

在获取Token的请求之前添加关联规则,比如如果Token在页面meta标签里:

// 在访问目标页面前,添加Token关联规则
web_reg_save_param("CSRF_TOKEN",
    "LB=name=\"_csrf\" content=\"", // 左边界,根据实际页面代码调整
    "RB=\"", // 右边界
    "Search=Body", // 在响应体中查找
    LAST);

// 访问包含Token的页面
web_url("AcademyManagePage",
    "URL=http://localhost:8080/ams/your-target-page",
    LAST);

如果Token在Cookie里:

web_reg_save_param("CSRF_TOKEN",
    "LB=XSRF-TOKEN=",
    "RB=;",
    "Search=Headers", // 在响应头的Cookie中查找
    LAST);

步骤3:替换硬编码的Token

把原来的固定Token换成关联变量:

web_add_header("X-CSRF-TOKEN", "{CSRF_TOKEN}");
web_add_header("X-Requested-With", "XMLHttpRequest");
lr_think_time(33);
web_custom_request("saveScheduleAcademyMapping",
    "URL=http://localhost:8080/ams/saveScheduleAcademyMapping",
    "Method=POST",
    "Body=your-request-body-content", // 注意:请求体里的动态参数(比如scheduleId)也要做关联!
    LAST);

2. 检查请求的其他动态参数

别只盯着Token——有时候报错是因为请求体里的其他动态参数(比如scheduleId、academyId)没有关联,导致请求不符合服务器预期,被误判为CSRF攻击。一定要确保所有自动生成的参数都用关联变量替换。

3. 确保会话一致性

CSRF Token通常和用户会话绑定,如果回放时会话Cookie丢失或重置,Token验证也会失败。检查脚本中是否保留了完整的Cookie链,必要时可以用web_add_cookie手动维护会话,或者开启LoadRunner的"自动处理Cookie"功能。

4. 验证Token的刷新机制

有些系统会在每次请求后刷新CSRF Token,这意味着你需要在每个需要Token的请求前都重新提取一次Token,而不是只提取一次复用全程。

按照这个思路调整脚本,应该就能解决这个报错问题了。

内容的提问来源于stack exchange,提问作者Prateek Naik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:24:24