码迷,mamicode.com
首页 > Web开发 > 详细

Node.js http parse error

时间:2014-08-24 16:36:22      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   ar   问题   div   

 今天碰到一个奇怪的错误.

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

标签:style   blog   http   color   os   io   ar   问题   div   

原文地址:http://www.cnblogs.com/tguitar/p/3932861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!