request.env ['CONTENT_TYPE']和request.content_type之间有什么区别?

时间:2011-02-01 08:43:53

标签: ruby-on-rails ruby-on-rails-3 content-type httprequest actiondispatch

我看到request.env['CONTENT_TYPE']request.content_type有两个不同的值。

在单独的应用程序中,我向Rails应用程序发送请求,并明确将Content-Type设置为text/xml

以下是我在Rails应用程序中看到的另一端:

request.env['CONTENT_TYPE'] = "text/xml"
request.content_type = "application/xml"

request.content_type实际上是action_dispatch.request.content_type

  1. request.env['CONTENT_TYPE']request.content_type之间的区别是什么?
  2. 为什么这两个值不同?

1 个答案:

答案 0 :(得分:5)

request.env包含Rack关于内容类型的“想法”。通常,这是您所做请求的内容类型。

另一方面,

request.content_type是Rails根据请求的格式对其认为的内容类型的解释。这些是在Rails中名为mime_types.rb的文件中定义的(我无法回想起哪个部分,但你可以找到它),并且可以在config/initializers/mime_types.rb中指定其他部分。