7

当我使用 Content-Type: "application/x-www-form-urlencoded" 将数据发布到 Rails 4 应用程序时,我可以使用 request.body.read 获取请求的正文

但是,当我使用 Content-Type“application/json”发布数据时,request.body.read 是空白的,除非我先调用 request.body.rewind。

两个问题:

1.) 如何在不先在流上调用 rewind 的情况下获取原始请求正文?

2.) 当客户端发送内容类型 application/json 时,是否可以停止 Rails(或 Rack)解析请求正文中的 JSON

请注意,在 Rails 3 中,与 Rails 4 一样,解析后的 JSON 在 params 中可用,但 request.body.read 不需要先回退。

4

3 回答 3

5

确实是一个错误。该修复程序已集成到 master 中,并且应该会在 4.0.1 中弹出。

于 2013-08-06T16:50:19.673 回答
2

使用 request.env 而不是 request.body.read。

于 2014-03-10T00:04:25.040 回答
0

看起来这可能是 ActionDispatch::ParamsParser 中的错误。将以下内容放入 config/application.rb 似乎可以修复它

config.middleware.delete ActionDispatch::ParamsParser
于 2013-06-05T08:10:54.687 回答