Node.js集成Twilio短信状态回调出现大量11200错误求助
解决Twilio 11200错误:状态回调响应缺失Content-Type问题
嘿,这个11200错误我太熟了!之前用Twilio做短信状态回调的时候也踩过这个坑——明明短信发成功了,但日志里一堆红错误看着闹心,其实问题出在你的状态回调接口的响应上。
问题根源
Twilio对Webhook(也就是你的状态回调URL)的响应有个硬性要求:必须返回包含合法Content-Type头部的2xx响应。哪怕你不需要返回任何业务内容,也得给Twilio一个符合规范的响应头,不然它就会抛出“读取响应错误:响应不包含内容类型”的11200错误。
而且这里要注意:短信发送和状态回调是异步的——Twilio收到你的发送请求后就会返回成功,但之后才会去调用你的回调URL,所以回调的错误不会影响已经发出的短信,但会在日志里留下错误记录。
具体解决办法
根据你用的Node.js框架(比如Express或者原生http模块),给回调接口加上Content-Type头部就行:
如果你用Express框架:
app.post('/api/1.0/sms/response', (req, res) => { // 这里写你的状态处理逻辑:比如把短信状态写入数据库 console.log('收到Twilio状态回调:', req.body); // 关键步骤:设置Content-Type并返回200响应 res.set('Content-Type', 'text/plain'); res.status(200).send('OK'); // 如果你习惯返回JSON,也可以这么写: // res.set('Content-Type', 'application/json'); // res.status(200).json({ status: 'success' }); });
如果你用原生Node.js http模块:
const http = require('http'); const server = http.createServer((req, res) => { if (req.url === '/api/1.0/sms/response' && req.method === 'POST') { // 处理回调请求的内容(比如解析POST数据) let body = ''; req.on('data', chunk => body += chunk); req.on('end', () => { console.log('Twilio回调数据:', body); // 设置Content-Type并返回响应 res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('OK'); }); } });
额外检查项
- 确保你的回调URL是公开可访问的(本地开发的话可以用内网穿透工具把本地端口暴露到公网)
- 响应状态码必须是2xx(比如200),别返回4xx或5xx状态码
- 如果返回JSON格式,一定要保证JSON是合法的,同时
Content-Type设为application/json
内容的提问来源于stack exchange,提问作者gbryant
相关产品推荐
相关产品推荐

