【发布时间】:2019-08-16 00:22:37
【问题描述】:
我有一个运行 Express 的云函数作为 Web 挂钩端点。 我的客户发送一个带有空正文值的 POST 请求。 并且该服务使用此日志返回 400 Bad Request:
SyntaxError: Unexpected token # in JSON at position 0
at Object.parse (native)
at createStrictSyntaxError (/var/tmp/worker/node_modules/body-parser/lib/types/json.js:157:10)
at parse (/var/tmp/worker/node_modules/body-parser/lib/types/json.js:83:15)
at /var/tmp/worker/node_modules/body-parser/lib/read.js:121:18
at invokeCallback (/var/tmp/worker/node_modules/raw-body/index.js:224:16)
at done (/var/tmp/worker/node_modules/raw-body/index.js:213:7)
at IncomingMessage.onEnd (/var/tmp/worker/node_modules/raw-body/index.js:273:7)
at emitNone (events.js:86:13)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:978:12)
但 null 是一个有效的 JSON 值。任何其他正确的 JSON 值似乎都可以。
作为更具体的例子:
响应 200:
curl -d '{"foo": true}' -H "Content-Type: application/json" -X POST {endpoint_url}
响应 400 / 语法错误:
curl -d null -H "Content-Type: application/json" -X POST {endpoint_url}
似乎没有到达 Express,所以我想该请求已被预先解析和验证? 如何记录请求以分析拒绝的原因?
谢谢
【问题讨论】:
-
您检查过 Stackdriver 日志中的一些日志注册表吗?
标签: express google-cloud-platform