You need to enable JavaScript to run this app. PHP cURL请求API返回空白 页面源码可见XML响应问题排查
优惠活动
大模型
产品
解决方案
定价
更多

PHP cURL请求API返回空白 页面源码可见XML响应问题排查

PHP cURL请求内网HTTPS API后浏览器无输出问题定位

直接原因

  • 你的PHP脚本未设置面向浏览器的响应头,PHP默认输出Content-Type: text/html
  • 浏览器收到text/html类型的XML返回内容时,会将内容开头的XML声明(<?xml ...?>)判定为非法HTML处理指令,触发渲染逻辑隐藏所有内容,仅在页面源码中保留原始返回值
  • 你在cURL配置中添加的Content-Type: application/xml是发送给远端API的请求头,仅用于告知API本次请求的内容格式,和当前脚本向浏览器返回的响应头完全无关
  • Postman会自动识别返回内容的格式并提供预览,不受响应头类型限制,因此表现和浏览器存在差异

修复方案

根据你需要的展示效果,在echo $result;语句前添加对应响应头即可:

  • 如需直接展示XML原始纯文本(和页面源码看到的内容完全一致):
    header('Content-Type: text/plain; charset=utf-8');
  • 如需让浏览器将返回内容识别为XML,自动渲染为结构化XML树(和Postman的XML预览效果一致):
    header('Content-Type: application/xml; charset=utf-8');
    另外可移除cURL请求头中冗余的Content-Type: application/xml:GET请求无请求体,该头对API无实际作用。

修正后完整代码

<?php

$username = 'XXXX';
$password = 'XXXX';
$url = 'https://10.5.6.1/getperformance';

$credentials = base64_encode("$username:$password");

$headers = [];
$headers[] = "Authorization: Basic {$credentials}";
$headers[] = 'Accept: */*';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}

curl_close($ch);

// 按需选择对应响应头
header('Content-Type: application/xml; charset=utf-8');
echo $result;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 16:36:07