设置为:Puma:2.9.1 Rails:4.1.5 机架:1.5.2
根据文档,我试图通过添加fallowing到我的application.rb
来获取ContentLength标头。config.middleware.use Rack::ContentLength
不幸的是,回应仍然存在。经过一些投资后,我在Rack :: ContentLength类中找到了以下条件:
if !STATUS_WITH_NO_ENTITY_BODY.include?(status.to_i) &&
!headers['Content-Length'] &&
!headers['Transfer-Encoding'] &&
body.respond_to?(:to_ary)
body.respond_to?(:to_ary)只是一个产生错误的东西。在那个上下文中,body是Rack :: BodyProxy的实例,其中responds_to?被覆盖:
def respond_to?(*args)
return false if args.first.to_s =~ /^to_ary$/
super or @body.respond_to?(*args)
end
我真的很困惑。删除body.respond_to?(:to_ary)解决了问题,但我不安全只是从机架lib中删除代码块。任何有助于获取内容长度标题的帮助表示赞赏。感谢。