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

Gatling录制脚本GET请求未携带Cookie导致302重定向问题

问题根因

Cookie丢失、请求被302跳首页的核心原因和Gatling本身的Cookie能力无关,是两个低级错误导致的:

  • 脚本结构错误:你把登录后的Dashboard请求、pause暂停、MyBook请求全塞到了登录POST请求的.resources()块里。.resources()的作用是定义和主请求并行发起的附属静态资源请求(CSS、JS、图片等),不会等主请求(登录POST)返回就会执行,此时登录流程还没走完,根本没拿到认证后的有效Cookie,后续请求自然会被拦截。
  • 硬编码动态参数:代码里写死的_token值、固定Cookie值完全无效。Laravel框架的XSRF令牌、Session ID都是每次会话动态生成、和当前用户绑定的,硬编码值和服务端存储的会话不匹配时,会直接判定为未登录状态返回跳转。

说明:Gatling 3.x默认开启全局自动Cookie管理,会自动存储服务端Set-Cookie返回的所有Cookie,自动携带到同域后续请求,完全不需要手动写代码存取Cookie。

修复步骤
  • 先修正脚本执行顺序:把塞在.resources()里的非静态资源请求全部移到外层,保证请求严格按「访问首页→提交登录→访问Dashboard→访问MyBook」的顺序串行执行,上一个请求拿到完整响应、更新完Session后再发下一个请求。
  • 动态提取CSRF令牌:不要硬写_token,第一次访问首页时从页面表单里提取动态生成的令牌,存到Session变量里供登录请求使用。
  • 显式声明Cookie管理配置:在httpProtocol中显式开启Cookie管理,避免全局配置被意外覆盖,同时不要在公共请求头里写固定Cookie字段,会覆盖自动管理的Cookie内容。
修复后可运行示例代码
private val httpProtocol = http
  .baseUrl("https://branch3.coverageforcompanies.com")
  .enableCookieManagement // 显式开启自动Cookie管理,3.x版本默认开启
  // 排错阶段可以注释掉自动重定向,方便查看每个请求的原始响应,确认流程正常后再开启
  .disableFollowRedirect

private val scn = scenario("AgentTest")
  .exec(
    http("Open C4C on Chrome")
      .get("/")
      .headers(headers_0)
      // 从首页隐藏input中提取动态CSRF令牌,存为session变量csrfToken
      .check(css("input[name=_token]", "value").saveAs("csrfToken"))
  )
  .pause(5)
  .exec(
    http("Enter Agent email and password")
      .post("/")
      .headers(headers_4)
      // 引用动态提取的令牌,替换硬编码值
      .formParam("_token", "#{csrfToken}")
      .formParam("username", "你的测试账号邮箱")
      .formParam("password", "你的测试账号密码")
      .check(status.is(302)) // 正常登录成功会返回302跳转到Dashboard
  )
  .pause(2)
  .exec(
    http("Jump to dashboard after login")
      .get("/a/dashboard")
      .headers(headers_5)
      .check(status.is(200)) // 加状态码校验,确认登录成功拿到Dashboard页面
  )
  .pause(5)
  .exec(
    http("Click on My Book Link")
      .get("/a/mybook")
      .headers(headers_5)
      .check(status.is(200))
  )
排错注意事项
  • 如果还是出现302,先保留.disableFollowRedirect配置逐请求排查:如果登录POST本身就跳首页,说明账号密码错误或者CSRF令牌提取失败;如果登录POST正常跳Dashboard,但Dashboard请求跳首页,检查服务端Set-Cookie的domain属性是否和你请求的域名匹配。
  • 不要手动解析响应头的Set-Cookie值再手动塞到后续请求头里,自动Cookie管理已经完整实现了Cookie的过期、域匹配、路径匹配逻辑,手动添加Cookie反而会覆盖正常的Cookie值导致异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:15:42