Firebase Hosting REST API部署成功后访问出现Page not found求助
问题排查与修复方案
1. 修复上传请求头的致命错误
你当前上传逻辑中直接把Content-Length写死为固定值500,这是最核心的问题:不同文件压缩后的大小完全不同,固定长度会导致上传的文件内容被截断/请求不完整,Firebase服务端无法识别到有效文件,这也是versions.patch响应缺失fileCount、versionBytes字段的直接原因。
同时你上传的是gzip压缩后的内容,缺少Content-Encoding头告知服务端压缩格式,会导致服务端将压缩后的二进制直接当做原始文件存储,无法解析文件内容。
修正后的请求头逻辑:
headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/octet-stream", "Content-Encoding": "gzip", "Content-Length": str(len(bytes)) }
2. 修复压缩文件路径的语法错误
你的压缩代码中路径拼接多写了一个多余的反引号,会导致压缩后的文件被写入错误路径,后续上传时读取的要么是空文件要么是不存在的无效文件:
原错误代码:
gzip.open(f"`{OUTPUT_DIR}/{file_name}.gz", 'wb')
修正后:
gzip.open(f"{OUTPUT_DIR}/{file_name}.gz", 'wb')
3. 校验文件哈希与路径配置
调用versions.populateFiles接口时,需要确保两个配置正确:
- 传入的文件哈希是未压缩的原始文件的SHA-256哈希,不是压缩后文件的哈希
- 每个文件对应的访问路径正确,比如根路径的首页要对应
/index.html路径,否则访问站点根地址会返回404
4. 确认根路径默认文件存在
确保你上传的文件中包含根路径的index.html文件,如果所有文件都放在子目录下,或者路径映射错误,访问站点首页会直接返回Page Not Found。
内容的提问来源于stack exchange,提问作者Andrej
相关产品推荐
相关产品推荐

