Node.js连接中间件限制不起作用
Node.js Connect middleware Limit not working
我有问题服务器:
var connect = require('connect');
var http = require('http');
var app = connect()
.use(connect.limit('32kb'))
.use(connect.urlencoded())
.use(connect.json())
.use(function(req, res){
console.log('yo');
res.end('hello'n');
});
http.createServer(app).listen(3000);
客户端:
var http = require('http');
var req = http.request({
method: 'POST',
port: 3000,
headers: {
'Content-Type': 'application/json'
}
});
req.write('[');
var n = 30000000;
while (n--) {
req.write('"foo",');
}
req.write('"bar"]');
req.end();
Connect的中间件限制而不是"限制"json的大小。我知道它会被弃用,但取而代之的是Express框架,我可以用什么来限制请求的大小?
改为执行以下操作:
.use(connect.urlencoded({
limit: '32kb'
}))
.use(connect.json({
limit: '32kb'
}))
或者只是:
.use(connect.bodyParser({
limit: '32kb'
})
您仍然可以写入req
,但这并不一定意味着服务器将接收这些字节。如果你检查了响应,它不是一个4xx错误,那么它就是一个错误。
编辑:
req.once('response', function (res) {
assert.equal(res.statusCode, 413)
})
.write(new Buffer(123123123213223122))
.end()
限制中间件只检查请求消息的头Content-Length
,而HTTP POST请求中没有这样的头。
您可以使用进行验证
var app = connect()
.use(connect.limit('32kb'))
.use(connect.urlencoded())
.use(connect.json())
.use(function(req, res){
console.log(req.headers);
console.log('yo');
res.end('hello'n');
});
您可以通过以下代码测试limit
中间:
var http = require('http');
var req = http.request({
method: 'POST',
port: 3000,
headers: {
'Content-Type': 'application/json',
'Content-Length': 40 * 1024
}
});
BTW:您可以查看limit
中间件是如何测试的:https://github.com/senchalabs/connect/blob/master/test/limit.js
相关文章:
- 自定义控件中的双向绑定在SAPUI5中不起作用
- 用键盘分页jQuery下一个和上一个控件.触发器('点击')不'不起作用
- 镀铬延长件内部的聚合物纸按钮不起作用
- 意思是.JS中间件中的猫鼬填充不起作用
- 脚本在web浏览器控件中不起作用
- 预编译文件不起作用
- NVD3图表控件don'在svg元素上挂接鼠标事件时不起作用
- Node.js连接中间件限制不起作用
- HTML5 视频控件不起作用
- 传单 GeoJASON 图层控件在此脚本中不起作用
- 指南文本 使用其他控件输入文本时不起作用
- HTML5 视频控件在 Internet Explorer 中不起作用
- Javascript null 或 empty 控件不起作用
- 引导程序 3.1.1 轮播控件不起作用
- Birghtcove 无铬视频播放器控件在 Safari 中不起作用
- KeyPress事件在Asp.Net中的图像控件上不起作用
- 多个用户控件实例的相同JavaScript不起作用
- 使用jquery的同一页面中的两个用户控件不起作用
- ExpressJs的res.sendFile在中间件之后不起作用
- ExpressJS >路由器中间件>通过重定向传递变量 req.foo 不起作用