Tôi hy vọng ai đó có thể xóa một số thứ cho tôi. Tôi đang sử dụng Rails 2.3.5 và tôi có thể truy cập các tiêu đề yêu cầu trong một hành động điều khiển như sau:Tiêu đề ủy quyền trong Ruby on Rails được truy cập bằng khóa HTTP_AUTHORIZATION thay vì Ủy quyền?
def index
if request.headers['...'] == '...'
...
end
end
Hoặc tương tự. request.headers là một thể hiện của ActionController::Http::Headers có vẻ như là một Hash. Tôi mong chờ, do đó, các tiêu đề được đánh dấu trên tên tôi gửi. Nếu tôi gửi một yêu cầu tuy nhiên, với một tiêu đề Authorization, như vậy:
curl -H 'Authorization: OAuth realm="MyRealm",...' http://app/path
Các mã sau trong hành động trả về false:
if request.headers.include?('Authorization') ...
Trong khi echos sau ra giá trị tôi gửi trong tiêu đề :
render :text => request.headers['Authorization']
Vui lòng cung sau trả về true, thú vị đủ:
if request.headers.include?('HTTP_AUTHORIZATION') ...
Và tương tự, sau đây vang ra giá trị tôi gửi trong tiêu đề:
render :text => request.headers['HTTP_AUTHORIZATION']
Có vẻ như có một số kỳ diệu xảy ra mà tôi không biết. Tôi hoàn toàn nhầm lẫn là tại sao việc kiểm tra khoá 'Ủy quyền' không thành công, nhưng việc hiển thị giá trị của request.headers ['Authorization'] thành công. Tôi cũng bối rối về nơi 'HTTP_AUTHORIZATION' đến từ đó là không phải là tên của tiêu đề tôi gửi cùng với yêu cầu. Có ai biết chính xác những gì đang diễn ra không?
Tôi đã dành một giờ trước khi tìm hiểu điều này. Tôi nghĩ rằng nó khá khó hiểu: ít nhất họ nên ghi lại hành vi này tốt hơn. – collimarco