nodejs-request-module里的json参数的一个坑

85次阅读

共计 562 个字符,预计需要花费 2 分钟才能阅读完成。

今天工作的时候遇到一个坑,在客户端用 nodejs 给服务器发送 HTTP 请求,服务器老是报错:In the context of Data Services an unknown internal server error occurred

经过服务器端调试发现,服务器根本就没有正确解析出这个请求的 content-type。在 postman 里能工作的场景下,正确解析出的 content-type 是 multipart/mixed:

而我的 nodejs 代码里明明指定了这个 content-type 的啊?

经过一行行代码分析,最后发现问题出在第 63 行的 json 字段的值。我错误的赋成了 true。

这个参数起什么作用?调试一下就知道了。如果为 true,进入第 403 行。

如果请求内部有 entity 的 content-type 不是 application/x-www-form-urlencoded, 则进入第 1293 行。

safeStringify 的实现逻辑就是浏览器原生的 JSON.stringify, 把应用程序传入的 json 对象序列化成字符串。但是我的代码里,传入 request module 的请求体是一个字符串,而 json 参数设的又是 true,所以逻辑上就不对了。把这个 json 参数的值改为 false 后,一切正常。

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

正文完
 0