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

外部站点调用WordPress Posts API返回空白页,状态码200却无数据

问题:WordPress REST API 拉取文章返回空白(状态码200)

我们需要从另一个WordPress站点拉取文章,找到/wp-json/wp/v2/posts接口后,在浏览器和Postman中都能正常获取数据,但外部站点发起curl请求时,页面显示空白,请求状态码为200却无数据返回。

最初以为是本地服务器未使用HTTPS导致,部署到安全开发服务器后问题依旧;随后尝试添加认证信息,仍未解决问题。

以下是两次尝试的curl代码:

第一次请求代码

$curl = curl_init();
curl_setopt_array($curl, array 
    (
        CURLOPT_URL => 'https://www.hidden.com/wp-json/wp/v2/posts',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_POSTFIELDS => array('title' => 'Sample Post','status' => 'publish'),
        ));
        
$response = curl_exec($curl);
curl_close($curl);    
echo $response;

第二次带认证的请求代码

$username='hiddenusr';
$password='hiddenpass';
$URL='https://www.hidden.com/wp-json/wp/v2/posts';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result=curl_exec ($ch);
echo $result;
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
curl_close ($ch);

请问哪里操作出错了?为何在Postman中正常但我的站点不行?


问题排查与解决

1. HTTP请求方法错误

获取文章的接口/wp-json/wp/v2/posts默认支持GET请求,但你第一次请求用了POST方法还带了CURLOPT_POSTFIELDS,这会让API认为你是要创建文章,而非获取文章,自然返回不符合预期的空白结果。

2. SSL证书验证问题

服务器可能没有配置可信的SSL根证书,curl默认会严格验证目标站点的SSL证书,验证失败时会静默返回空内容,但状态码仍可能返回200。测试环境可以临时关闭验证(生产环境建议配置正确的CA证书),添加以下两个参数:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

3. 缺少curl错误排查

你的代码没有检查curl执行过程中的错误,添加错误检查能直接定位问题:

if(curl_errno($ch)) {
    echo 'CURL错误:' . curl_error($ch);
}

4. 认证冗余(或方式错误)

如果是拉取公开文章,WordPress REST API不需要认证,添加基础HTTP认证反而可能触发权限问题;如果是私有文章,应该使用WordPress 5.6+支持的应用密码,或者JWT认证插件,而非基础HTTP认证(默认REST API不支持)。

修正后的示例代码

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.hidden.com/wp-json/wp/v2/posts');
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 测试环境临时关闭SSL验证,生产环境请移除并配置可信证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

$result = curl_exec($ch);

// 排查curl错误
if(curl_errno($ch)) {
    echo 'CURL错误:' . curl_error($ch);
} else {
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo '状态码:' . $status_code . '<br>';
    echo $result;
}

curl_close($ch);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:31:22