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

使用Postman调用CodeIgniter接口时$_POST变量为空的问题

CodeIgniter控制器方法Postman调用时POST数据为空的排查与解决

问题描述

基于CodeIgniter搭建的Web应用,内部调用控制器公开方法时能正常获取POST负载,但通过Postman调用同一方法时,$_POST、$this->input->post()均为空,甚至在框架启动的Config.php中打印$_POST也为空。尝试json_decode(file_get_contents('php://input'), true)同样返回NULL。

已尝试的操作:

  • 在Postman中切换多种Content-Type(包括form-data、x-www-form-urlencoded)
  • 多种POST数据获取方式($_POST、框架输入类、php://input)
  • 在代码执行不同阶段(控制器方法、Config.php)打印POST数据

请求信息:

  • 请求方式:POST
  • 请求地址:http://localhost/myController/myFunction
  • 请求头:username: my_user

调用返回结果:

NULL
array(0) {}
NULL

测试代码

public function myFunction()
{
    $x = json_decode(file_get_contents('php://input'), true);
    var_dump($x);
    var_dump($_POST);
    var_dump($this->input->post('payload'));
}

可能的原因及解决方法

1. CSRF防护拦截

CodeIgniter默认开启CSRF防护,Postman请求未携带CSRF令牌会被拦截,直接清空POST数据。

  • 临时测试关闭:打开application/config/config.php,设置$config['csrf_protection'] = FALSE;
  • 正规测试流程:先从应用页面或专用接口获取CSRF令牌,在Postman请求中添加X-CSRF-Token请求头,值为获取到的令牌。

2. 请求格式与Content-Type不匹配

即使选择了form-data或x-www-form-urlencoded,需确保格式和请求头严格对应:

  • 用x-www-form-urlencoded:直接在Postman「Body」标签下填写键值对,框架会自动解析到$_POST
  • 用form-data:不要勾选「Disable form-data」,确保键值对填写正确
  • 用JSON格式:必须设置Content-Type: application/json,同时在「Body」选择「raw」并输入合法JSON字符串(注意引号、逗号格式),此时用file_get_contents('php://input')解析。

3. POST数据大小超限

若POST数据体积过大,会被PHP或框架拦截:

  • 检查PHP配置:修改php.ini中的post_max_size、upload_max_filesize为合适值,重启服务器
  • 检查CodeIgniter配置:application/config/config.php中$config['max_input_vars']是否设置过小,按需调整。

4. 路由重定向丢失数据

确认myController/myFunction的路由规则是否正确,若请求被重定向(比如路由规则错误导致301/302跳转),POST数据会丢失。可在控制器方法中打印$_SERVER['REQUEST_METHOD'],若返回GET则说明存在重定向问题。

5. 框架输入类配置异常

检查application/config/config.php相关配置:

  • $config['global_xss_filtering']若开启,可能过滤掉了POST数据,可临时关闭测试
  • $config['enable_query_strings']若设为TRUE,会影响POST数据的解析逻辑,测试时可改为FALSE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:05:24