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

PHP Curl带Cookie发起GET请求返回403无法获取JSON,如何解决?

问题排查点
  • Cookie有效性问题
    你使用的ci_session是CodeIgniter框架的会话Cookie,这类Cookie通常会和获取时的客户端IP、User-Agent绑定,如果你是从浏览器里复制的Cookie,只要curl请求的IP、UA和浏览器不一致,或者Cookie已经过期,服务端会直接判定会话无效返回403。
  • 缺少必填请求头
    多数站点的接口会额外校验User-Agent、Referer、X-Requested-With等请求头,你当前仅传入了Cookie和Accept头,缺失的话会被服务端的安全策略拦截。
  • Cookie不完整
    如果该站点的身份凭证不止ci_session一个Cookie,你只传了单个Cookie也会导致身份校验失败。
  • 请求参数缺失
    确认该接口是否需要传入额外的Query查询参数,参数缺失也会触发403返回。
修正后的代码示例
$url = "URL HERE";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 直接使用CURLOPT_COOKIE设置Cookie更规范,避免头格式错误
curl_setopt($curl, CURLOPT_COOKIE, 'ci_session=COOKIE HERE');

$headers = array(
   "Accept: application/json",
   "User-Agent: 替换为你获取Cookie时的浏览器UA",
   "Referer: 替换为该接口所属页面的地址",
   "X-Requested-With: XMLHttpRequest"
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

// 开启错误打印方便排查
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = curl_exec($curl);
// 打印请求状态码方便确认问题
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
var_dump($httpCode, $resp);
curl_close($curl);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:36:03