我希望有人能为我清理一些东西。我使用Rails 2.3.5,我可以在这样的控制器操作访问请求头:使用密钥HTTP_AUTHORIZATION而不是授权访问Ruby on Rails中的授权标头?
def index
if request.headers['...'] == '...'
...
end
end
或类似的东西。 request.headers是ActionController::Http::Headers的一个实例,它似乎是一个Hash。因此,我期望,标题是关于我发送的名字的。但是,如果我发送一个请求,用Authorization头,就像这样:
curl -H 'Authorization: OAuth realm="MyRealm",...' http://app/path
在动作下面的代码返回false:
if request.headers.include?('Authorization') ...
而下面的回声出来的值我的头送:
render :text => request.headers['Authorization']
以下检查返回true,有趣的是:
if request.headers.include?('HTTP_AUTHORIZATION') ...
同样,以下呼应了我的头发送的值:
render :text => request.headers['HTTP_AUTHORIZATION']
好像有一些神奇的发生,我是不知道的。对于为什么检查密钥'授权'失败,我完全感到困惑,但是呈现request.headers ['授权']的值成功。我也很困惑'HTTP_AUTHORIZATION'来自哪里,因为这是而不是我用请求发送的头部名称。任何人都知道到底发生了什么?
我花了一个小时才弄清楚这一点。我认为这很令人困惑:至少他们应该更好地记录这种行为。 – collimarco 2015-12-29 12:00:02