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

REST API返回102 HTTP状态码时响应头缺失问题求助

排查HTTP 102响应头丢失问题的思路和解决方案

我之前在处理REST API异步导出功能时,也碰到过类似的102状态码响应头丢失的坑,结合你给出的新旧配置差异,给你几个具体的排查方向和解决办法:

1. 先区分是服务器配置还是框架的问题

首先排除Lumen的影响,写一个简单的原生PHP脚本测试102响应:

<?php
// 手动添加你需要的响应头
header('Access-Control-Allow-Origin: *');
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Content-Type: application/json');
// 设置102状态码
http_response_code(102);
echo json_encode(['status' => 'processing']);
?>

用curl -v http://你的服务器地址/test.php访问,查看响应头是否完整:

  • 如果原生PHP返回的102响应头正常,那问题出在Lumen的响应处理逻辑上
  • 如果原生PHP也没有响应头,那就是Apache或PHP的配置问题

2. 针对Lumen框架的调整

如果是框架的问题,大概率是response()->json()在处理非2xx状态码时,没有自动填充默认响应头。你可以手动强制添加所需的响应头:

public function getItem(int $id)
{
    if($export = Export::find($id)) {
        $this->authorize(__FUNCTION__, $export);
        if($export->status != Export::STATUS_COMPLETED) {
            return response()->json($export, 102)
                ->header('Access-Control-Allow-Origin', '*') // 替换成你的实际允许域名
                ->header('Cache-Control', 'no-cache, no-store, must-revalidate')
                ->header('Content-Type', 'application/json')
                ->header('Date', gmdate('D, d M Y H:i:s T'))
                // 其他你需要的响应头...
            ;
        }
        return response()->json($export);
    }
    throw new ModelNotFoundException();
}

Lumen的响应类在处理非标准状态码时,可能不会自动注入某些默认头,手动添加后应该能正常显示。

3. Apache配置的排查

从你的版本变化来看,Apache从2.4.27升到了2.4.29,这个版本可能对临时响应状态码(比如102)的处理有调整:

  • 检查mod_headers模块:确保mod_headers已经启用(执行a2enmod headers),并且没有配置拦截102状态码的规则
  • 检查mod_security:如果启用了mod_security,它可能会拦截非标准状态码的响应头,可以临时关闭测试(执行a2dismod security2后重启Apache)
  • FastCGI配置(如果用PHP-FPM):如果是通过FastCGI运行PHP,需要确保Apache的FastCGI配置允许传递非标准状态码。可以在虚拟主机配置中添加:
    ProxyFCGIBackendType GENERIC
    
    这个配置会让Apache把所有状态码原样传递给客户端,而不是只处理标准的2xx/4xx/5xx。

4. 其他辅助排查点

  • 查看Apache的error.log和PHP的错误日志,看看有没有处理102状态码时的异常信息
  • 对比新旧环境的Apache配置文件(比如httpd.conf、虚拟主机配置),排查是否有新增的规则影响了响应头

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:37:32