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

调整宽松跨源资源策略解决000webhost接口返回HTML问题

部署000webhost后GraphQL接口返回HTML而非JSON的排查方案

针对你基于PHP/React/GraphQL的全栈应用在000webhost部署后,接口返回200但响应为HTML的问题,按以下步骤排查:

  • 确认接口URL是否指向正确的PHP入口
    000webhost默认会给新站点生成欢迎页(如index.html),如果你的GraphQL请求URL没有精准指向入口文件(比如graphql.php),服务器会直接返回默认HTML页面。检查前端请求的接口路径是否和后端部署的文件路径匹配,比如确保请求your-domain.com/api/graphql时,服务器能正确映射到你的GraphQL处理文件。

  • 排查PHP错误被封装为HTML返回
    000webhost的默认配置会把PHP错误转换成美化后的HTML页面返回(状态码仍为200)。可以在GraphQL入口文件顶部添加以下代码,强制输出错误信息并指定JSON响应头:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
header('Content-Type: application/json');

重新请求接口后,查看返回的HTML源码,里面通常会包含PHP的具体错误(比如依赖缺失、文件路径错误、权限不足等)。

  • 检查Apache的.htaccess重写规则
    如果使用Apache服务器,错误的.htaccess规则会导致请求无法转发到GraphQL入口。确保你的.htaccess包含正确的重写配置,比如:
RewriteEngine On
# 排除静态文件
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 把/api/graphql请求转发到graphql.php
RewriteRule ^api/graphql$ graphql.php [L]

同时确认000webhost允许自定义.htaccess(免费套餐可能有部分限制)。

  • 验证CORS配置是否异常
    跨域请求时,如果CORS头配置错误,服务器可能把OPTIONS预请求的错误返回成HTML。在PHP入口文件中添加CORS处理逻辑:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");

// 处理OPTIONS预请求
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    exit(0);
}
  • 确认GraphQL服务初始化是否成功
    检查PHP版本是否满足依赖要求(比如webonyx/graphql-php需要PHP 7.4+),同时确认Composer依赖是否已正确部署到000webhost(部分FTP上传可能遗漏vendor目录)。如果依赖缺失或版本不兼容,代码执行会失败,触发服务器默认的错误HTML页面。

附错误截图:
错误截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:00:03