Rails提供了一个request.headers方法,它返回所有标题和大量额外的非标题信息...我只想访问请求标题,我该怎么办?
此致
答案 0 :(得分:5)
您必须隔离所有环境条目,这些条目以HTTP_
或CONTENT_
为前缀,与您的HTTP标头相对应,例如:
# CONTENT_LENGTH -> Content-Length
# HTTP_COOKIE -> Cookie
# HTTP_USER_AGENT -> User-Agent
@headers |= request.env.inject({}) { |h, (k, v)|
if k =~ /^(HTTP|CONTENT)_/ then
h[k.sub(/^HTTP_/, '').dasherize.gsub(/([^\-]+)/) { $1.capitalize }] = v
end
h
}
或者,您可以限制性更强,只需查找特定 HTTP headers,以避免意外地拾取可能看起来像标题但实际上并非有效的环境变量,例如{{ 1}}或CONTENT_BLA
。
HTTP_DUMMY
查看@headers |= %w[ CONTENT_LENGTH CONTENT_TYPE HTTP_ACCEPT
HTTP_REFERER HTTP_USER_AGENT ].inject({}) { |h, k|
if v = request.env[k] then
h[k.sub(/^HTTP_/, '').dasherize.gsub(/([^\-]+)/) { $1.capitalize }] = v
end
h
}
,了解他们如何梳理环境以提取请求标头。