node.js - GET 的表达参数长度限制

标签 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
})

最佳答案

Node 不是对 URL 本身进行限制,而是对整个请求 header (包括 URI)进行限制。请求 header + URI 不能超过 80 kb。

此外,公开允许任意 SQL 查询(无论它们是否在 URL 上)的 API 是一个极其糟糕的主意。大多数应用程序花费大量精力试图阻止任意 SQL 查询不应公开的记录、删除表等。故意公开这样的端点感觉就像是在自找麻烦。

关于node.js - GET 的表达参数长度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52751383/

相关文章:

android - PhoneGap/Cordova Android 开发

node.js - 任务 'clean;' 不在使用 Node v0.10.26 的 Windows 中的 gulpfile 中

javascript - 我无法从 Node js + Express JS 中的 req.body 获取数据

javascript - res.jwt 不是一个函数 - NodeJS Express

node.js - ngx-翻译和 Angular 通用 : client side translations not found

node.js - 使用 Node gtfs-realtime-binding 解析 MBTA 行程更新提要

mysql - 如何使用 Express 访问 get 请求的结果(对象)?

node.js - 错误 403 禁止。没有权限访问该 URL

mysql - 从 'query inside query' 结束连接时出错

javascript - ExpressJS 不会在 app.use 中触发下一个路由