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

Joh*_*ohn 3 content-type ruby-on-rails httprequest actiondispatch ruby-on-rails-3

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

从单独的应用程序,我发送请求到我的Rails应用程序并明确设置Content-Typetext/xml.

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

request.env['CONTENT_TYPE'] = "text/xml"
request.content_type = "application/xml"
Run Code Online (Sandbox Code Playgroud)

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

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

Rya*_*igg 5

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

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