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

JMeter 5.6.3测试CodeIgniter 3.1.13应用时登录失败无法维持会话

排查CodeIgniter 3.x + JMeter登录会话维持失败问题

以下是针对你的登录失败问题的具体排查步骤:

  • 停止手动管理ci_session
    HTTP Cookie Manager会自动处理Cookie的接收和发送,包括CodeIgniter的ci_session。你手动在POST请求里添加Cookie头,很可能和Cookie Manager自动管理的Cookie产生冲突,导致服务器识别的会话不一致。直接删掉POST请求中的动态Cookie头,让Cookie Manager完全接管。

  • 添加CSRF令牌处理
    CodeIgniter 3默认启用CSRF保护,登录表单里会包含隐藏的CSRF令牌字段,浏览器登录时会自动提交这些值,但你的JMeter POST请求里没有包含,这是最常见的登录失败原因:

    1. 在GET登录页的请求下添加正则提取器,提取CSRF的名称和值:
      • 提取CSRF名称:正则表达式用name="([a-zA-Z0-9_]+)" value=".*" type="hidden",模板填$1$,引用名称设为csrf_name
      • 提取CSRF值:正则表达式用name=".*" value="([a-f0-9]+)" type="hidden",模板填$1$,引用名称设为csrf_value
    2. 在POST登录请求的参数列表里,新增参数${csrf_name}=${csrf_value}
  • 对齐浏览器请求头
    对比JMeter和浏览器的请求头,确保关键字段完全一致,比如User-Agent、Referer、Accept、Accept-Language等。可以用浏览器F12开发者工具复制登录请求的所有请求头,粘贴到JMeter的HTTP Header Manager中替换现有配置。

  • 校验POST请求细节

    1. 确认POST请求的路径和浏览器完全一致,包括是否包含完整域名、末尾是否带斜杠等
    2. 检查请求方法是否为POST,Content-Type是否设置为application/x-www-form-urlencoded(表单提交的默认类型)
  • 查看服务器端日志
    打开CodeIgniter的日志文件(位于application/logs目录),里面会记录登录失败的具体原因,比如CSRF验证失败、参数格式错误、会话不匹配等,这能直接定位问题根源。

  • 检查Cookie Manager配置

    1. 确保HTTP Cookie Manager的“Cookie Policy”设置为standard或netscape,不要选择ignoreCookies
    2. 取消勾选“Clear cookies each iteration?”选项,避免会话被意外清空
  • 处理密码特殊字符
    你的密码包含!这类特殊字符,在POST请求的参数设置里,勾选密码参数的“Encode?”选项,确保特殊字符被正确URL编码后发送。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:06:13