我希望有人可以为我清理一些东西.我正在使用Rails 2.3.5,我可以在控制器动作中访问请求标头,如下所示:
def index
if request.headers['...'] == '...'
...
end
end
Run Code Online (Sandbox Code Playgroud)
或类似的东西.request.headers是ActionController :: Http :: Headers的一个实例,它看起来像是一个Hash.因此,我希望标题符合我发送的名称.但是,如果我发送请求,请使用Authorization标头,如下所示:
curl -H 'Authorization: OAuth realm="MyRealm",...' http://app/path
Run Code Online (Sandbox Code Playgroud)
操作中的以下代码返回false:
if request.headers.include?('Authorization') ...
Run Code Online (Sandbox Code Playgroud)
以下回应我在标题中发送的值:
render :text => request.headers['Authorization']
Run Code Online (Sandbox Code Playgroud)
以下检查返回true,有趣的是:
if request.headers.include?('HTTP_AUTHORIZATION') ...
Run Code Online (Sandbox Code Playgroud)
同样,以下内容回显了我在标头中发送的值:
render :text => request.headers['HTTP_AUTHORIZATION']
Run Code Online (Sandbox Code Playgroud)
似乎有一些我不知道的神奇事件.我完全混淆为什么检查密钥'授权'失败,但渲染request.headers ['Authorization']的值成功.我也很困惑'HTTP_AUTHORIZATION'来自何处,因为这不是我随请求发送的标头的名称.有谁知道究竟发生了什么?