表示GET的参数长度限制

时间:2018-10-11 02:42:58

标签: node.js express

我有一个nodejs应用,我在其中将Express用于REST API。

其中一个api可以接受SQL查询,在数据库上运行它并返回JSON响应。一切正常,直到我用一个长的SQL查询测试了api。
调试后,我注意到SQL查询是自动修剪的。

可以在GET URL中传递的参数长度是否受到限制?

这就是我的api的样子

app.get('/v1/runsql/:query', (req, res) => {
let result = runQuery.executeQuery(req.params.query);
..... execute some more code here
})

2 个答案:

答案 0 :(得分:3)

节点不对URL本身施加限制,而是对整个请求标头(包括URI)实施限制。请求的标头+ URI不能超过80 kb。

此外,公开一个允许任意SQL查询(无论它们是否在URL上)的API是一个非常糟糕的主意。大多数应用程序都花了很多精力来尝试防止任意SQL查询不应公开的记录,删除表等。有意暴露这样的端点就像感觉到您在自找麻烦。

答案 1 :(得分:0)

http协议没有限制url的长度,但是浏览器和服务器(无论是Node还是其他)都限制了url的长度。如果您确实想实现此目的,则可以使用 POST 方法代替获取

并且http协议规范设置为:如果网址长度超出限制,服务器可能会返回代码 414