var express = require('express');
var app = express();
app.listen(30001);
app.use(function(req, res, next) {
req.rawBody = '';
req.setEncoding('utf8');
req.on('data', function(chunk) {
req.rawBody += chunk;
});
req.on('end', function() {
next();
});
});
app.use(express.bodyParser());
app.post("/ajax",function(req,res)
{
res.send("post");
}
);
post的时候,设置Content-Type为application/x-www-form-urlencoded 就不会有响应,如果设置其它的content-type就没有问题
我稍微看了一下express源码,貌似问题出在下面这个文件里面 \node_modules\express\node_modules\connect\lib\middleware\urlencoded.js 这个文件里面的
limit(req, res, function(err){
if (err) return next(err);
var buf = '';
console.log('urlencoded');//这句话会执行
req.setEncoding('utf8');
req.on('data', function(chunk){ buf += chunk;});
req.on('end', function(){
try {
req.body = buf.length
? qs.parse(buf, options)
: {};
} catch (err){
err.body = buf;
console.log(err);
return next(err);
}
next();
});
});
data和end事件都没有执行,所有next()就没有继续下去了,求解。