【发布时间】:2021-10-29 19:01:57
【问题描述】:
我们有一个使用 express 和 body-parser 的基于 NodeJS 的应用程序。服务器正在侦听 JSON 格式的 REST 请求。我们遇到了一个问题,请求中的某些字符正在被 HTML/XML 转义,我们强烈怀疑 express 或 body-parse 方面的某些东西正在这样做,但我们无法弄清楚这是什么原因。
在我们的测试场景中,我们使用 curl 发出请求:
curl 'http://localhost:6009/stores/1561289s12' \ ajmas@ghostwalker-echo
-X 'PUT' \
-H 'Accept: application/json, text/plain, */*' \
-H 'Content-Type: application/json; charset=utf-8' \
--data-raw $'{"name":"O\'Neil"}' \
--compressed
在服务器上,当我们查看req.body 中的name 值时,结果如下:
O'Neil
导致我们将矛头指向 express 或 body-parser 的原因是,当我们使用 Wireshark 检查时,我们会看到我们发送的正文。
我们初始化JSON解析如下:
app.use(express.json({}));
- Express 版本是 4.17.1
- Node JS 版本:14.15.1
本项目也使用了 express-validator。
任何人都可以提出任何可能导致此问题的建议吗?
【问题讨论】:
-
用此代码测试,工作正常:pastebin.com/yHWbMVy8
-
你确定 express 和你的前端之间没有什么东西吗?阿帕奇/ Nginx? iis?
-
在 localhost 上测试,直接 curl 到 localhost 上的 nodejs 服务器。会检查是否有一些中间件导致问题,因为 Roland 的测试很好。
-
我很欣赏这不一定是最好的问题,但我不会删除它,因为这是我确信在某个时候会成为搜索的一部分的问题,基于以前的经验。