下划线在rails标头中被转换为hypens?

时间:2016-12-12 13:24:17

标签: ruby-on-rails header

嗨,我在rails中有restful apis,在前端有react-redux ..

在前端:

[...]
'drivers' => array(   
    'Application\Entity' => 'application_entities'
)
[..]

即我从客户端发送了两个参数

  1. axios.defaults.headers.access_token = "default values" axios.defaults.headers.some_header_token = "some value"
  2. access_token
  3. 我在rails服务器上获得的内容

    在我的控制台我正在

    some_header_token

    但在

    中获取值
     request.header["access_token"] = nil
     request.header["some_header_token"] = nil
    

    下划线正在转换为超赞

1 个答案:

答案 0 :(得分:2)

Ref

# Provides access to the request's HTTP headers from the environment.
#
env     = { "CONTENT_TYPE" => "text/plain", "HTTP_USER_AGENT" => "curl/7.43.0" }
headers = ActionDispatch::Http::Headers.new(env)
headers["Content-Type"] # => "text/plain"
headers["User-Agent"] # => "curl/7/43/0"

另请注意,当标题被Rack映射到类似CGI的变量时    服务器,破折号和下划线都转换为下划线。这个    在这个阶段,模糊不能再解决了。两个下划线和    破折号必须被解释为它们最初是以破折号发送的。

GET / HTTP/1.1
#    ...
User-Agent: curl/7.43.0
X_Custom_Header: token
#
headers["X_Custom_Header"] # => nil
headers["X-Custom-Header"] # => "token"

即使标题名称中有下划线 很少遇到,它们根据RFC822 1有效。