【问题标题】:Rails 3 + JSON + Content Length not sentRails 3 + JSON + 内容长度未发送
【发布时间】:2012-03-01 19:19:28
【问题描述】:

我将 Rails 用于 WebApp(使用 mongrel 进行开发,使用 nginx 进行生产)。 我用以下方式发送 JSOn 数据:

respond_to do |format|
  format.json { render :json => { :success => "OK", :items => items } }
end

它有效。但我需要有 Content-Length,它没有发送。获取 JSON 时如何强制在标头中发送 Content-Length ?是 Rails 配置问题,还是服务器配置问题?

有没有办法在 Rails 中设置它?喜欢:

响应['Content-Length'] = xxx

这是个好主意吗?就我而言,我发送了大量 JSON 数据 (300 Kb)。

【问题讨论】:

    标签: ruby-on-rails json


    【解决方案1】:

    哪个 Rails 版本(确切地说)?

    试试http://dev.mensfeld.pl/2011/09/rails-3-1-sending-content-length-header-using-middleware-rack-content-length/ 这添加了一个设置 C.L. 的中间件。自动。

    当然你可以手动设置,但是因为有那个方便的中间件...:)

    另请参阅http://weblog.rubyonrails.org/2011/4/18/why-http-streaming - 显然它不是一直自动完成的,因为对于流式响应它没有用。

    【讨论】:

    • Rails 版本是 3.0.5。我试过你在 config.middleware.use Rack::ContentLength 之前说的,但这什么也没做......
    • 这是实际的 HTTP 响应 { "Cache-Control" = "max-age=0, private, must-revalidate"; Connection = close; "Content-Type" = "application/json; charset=utf-8"; Date = "Thu, 09 Feb 2012 11:17:27 GMT"; Etag = "\"fce7ad73ac9a5f1be5fd9e508ff80932\""; "Transfer-Encoding" = Identity; "X-Authenticity-Token" = "oD6rOpEN3Wrw4soWuyJiav8h6o+rWFPoIMW4tIStNHA="; "X-Runtime" = "1.537700"; "X-UA-Compatible" = "IE=Edge"; }
    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2011-11-22
    相关资源
    最近更新 更多