小编Pau*_*man的帖子

使用密钥HTTP_AUTHORIZATION而不是Authorization访问Ruby on Rails中的授权头?

我希望有人可以为我清理一些东西.我正在使用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'来自何处,因为这不是我随请求发送的标头的名称.有谁知道究竟发生了什么?

ruby-on-rails http

28
推荐指数
2
解决办法
2万
查看次数

标签 统计

http ×1

ruby-on-rails ×1