Firebase推送通知报错:Content-Type请求头缺失(已用Curl发送)
Firebase推送通知:已添加Content-Type请求头仍报错的解决办法
以下是几个实用的排查和解决方向:
严格检查请求头的拼写与大小写
Firebase服务器对Content-Type请求头的大小写要求严格,必须写成Content-Type: application/json(注意首字母大写的C和T),如果写成小写的content-type,服务器会直接判定请求头缺失。核对Curl命令的参数顺序
确保-H请求头参数放在-d请求体参数之前,部分场景下参数顺序错误会导致请求头未被正确解析。正确的命令示例:curl -X POST "https://fcm.googleapis.com/fcm/send" \ -H "Authorization: key=你的服务器密钥" \ -H "Content-Type: application/json" \ -d '{ "to": "目标设备Token", "notification": { "title": "测试通知", "body": "这是一条测试消息" } }'验证实际发送的请求头
给Curl命令加上-v参数,查看请求的详细日志,确认Content-Type是否真的被发送出去:curl -v -X POST "https://fcm.googleapis.com/fcm/send" \ -H "Authorization: key=你的服务器密钥" \ -H "Content-Type: application/json" \ -d '{...}'在输出中查找类似
> Content-Type: application/json的行,如果没有出现,说明命令本身存在问题,比如参数被意外截断。排查中间代理或防火墙的干扰
如果你的请求是通过代理或公司防火墙发送的,可能中间层会修改或移除请求头。尝试在无代理的环境(比如本地直接测试)运行Curl命令,验证是否能正常发送。检查脚本中的变量拼接问题
如果是在Shell脚本中拼接Curl命令,确认Authorization密钥或其他变量没有包含特殊字符(比如空格、引号),导致请求头被意外截断。可以给变量加上引号确保完整传递。
内容的提问来源于stack exchange,提问作者Abu Sufyan
相关产品推荐
相关产品推荐

