首页 > 代码库 > Node.js http parse error
Node.js http parse error
今天碰到一个奇怪的错误.
events.js:72 throw er; // Unhandled ‘error‘ event ^Error: Parse Error at Socket.socketOnData (http.js:1583:20) at TCP.onread (net.js:527:27)
代码如下:
一个简单的http服务器
var http = require(‘http‘);var server = http.createServer();server.listen(3000);server.on(‘request‘, function(req, res){ res.writeHead(‘Content-Type‘, ‘text/html‘); res.end(‘hello world‘);});
一段请求服务器的代码
var http = require(‘http‘);var req = http.request(‘http://localhost:3000‘);req.on(‘response‘, function(res){ res.setEncoding(‘utf8‘) res.on(‘data‘, function(data){ console.log(data); })})req.end();
问题出在这一行代码
res.writeHead(‘Content-Type‘, ‘text/html‘);
正确的写法是
res.writeHead(200, {‘Content-Type‘: ‘text/html‘});
如果服务器端写入了错误的header, 客户端就不能正确解析, 报的错误就是"Parse Error".
Node.js文档是这么解释req对象的error事件的
If any error is encountered during the request (be that with DNS resolution, TCP level errors, or actual HTTP parse errors) an ‘error‘ event is emitted on the returned request object.
如果Node.js的http module不能解析HTTP response, 一个error事件会被触发, 这就是为什么错误信息中有"Unhandled ‘error‘ event".
在查这个bug过程中, 一个困惑我的地方是, 我写的http请求代码会出错, 但是用浏览器打开http://localhost:3000却没问题. 当你写错了代码, 程序却正常运行了, 这样的bug最坑了.
Node.js http parse error
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。