Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

After reading the following question (Authorization header in Ruby on Rails accessed with key HTTP_AUTHORIZATION instead of Authorization?) I have a similar problem as the OP, but the proposed answer does not seem to solve mine.

I define a custom header as such in a call to my locally hosted server (through Postman):

@Igor: I actually use Postman, so I just added the curl code to demonstrate what I did. I guess it would be better to include a screenshot:

enter image description here

And this is the code in my controller which tries to read said header:

def authenticate_through_header
  custom_header_value = request.headers['custom_header']
end

However, this return nil. On the other hand, request.headers['HTTP_CUSTOM_HEADER'] returns the value. According to the question I linked to initially, I should be able to get the value through passing the name within the brackets [ ] - is this something which has been changed in newer Rails versions?

Cheers :-)

Update: It also works to access the variable in the following way: request.headers['custom-header']. So apparently it works to replace the underscore with a hyphen, which seems weird.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.3k views
Welcome To Ask or Share your Answers For Others

1 Answer

Yes, it has changed in Rails 4. Take a look at the Http::Headers code.

Now custom variables are always prepended with HTTP_ and _ in your variables are replaced with -, except for CGI variables.

HTH

EDIT: Just checked again, - in variables are getting replaced with _ and being prepended with HTTP_. In above link, check line number 91-94:

key = key.upcase.tr('-', '_')

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...