request.headers
एक हैश वापस नहीं करता है, लेकिन ActionDispatch::Http::Headers
का एक उदाहरण है, जो रैक एनवी के आसपास एक रैपर है।
ActionDispatch::Http::Headers
[]
और []=
जो इसे एक हैश की तरह व्यवहार कर जैसे कई तरीकों को लागू करता है, लेकिन यह डिफ़ॉल्ट inspect
पर हावी नहीं होता, इसलिए तुम सिर्फ p
या यह pp
द्वारा कुंजी-मान जोड़ों नहीं देख सकता।
हालांकि, आप अनुरोध हेडर रैक env में देख सकते हैं:
pp request.headers.env.select{|k, _| k =~ /^HTTP_/}
याद रखें कि रैक env में अनुरोध हेडर हैं upcase
घ, underscore
घ और मूल http अनुरोध हेडर की HTTP_
उपसर्ग के संस्करण ।
अद्यतन
असल में वहाँ अनुरोध हेडर कि HTTP_
पहले से जुड़ा हुआ नहीं कर रहे हैं की एक परिमित सेट कर रहे हैं। ये (पूंजीकृत और अंडरस्कोर) शीर्षलेख नाम ActionDispatch::Http::Headers::CGI_VARIABLES
में संग्रहीत हैं। मैं उन्हें नीचे की सूची:
AUTH_TYPE
CONTENT_LENGTH
CONTENT_TYPE
GATEWAY_INTERFACE
HTTPS
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_HOST
REMOTE_IDENT
REMOTE_USER
REQUEST_METHOD
SCRIPT_NAME
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
तो लिस्टिंग अनुरोध हेडर के पूर्ण संस्करण
pp request.headers.env.select{|k, _| k.in?(ActionDispatch::Http::Headers::CGI_VARIABLES) || k =~ /^HTTP_/}
यह 'अनुरोध की तरह दिखता है।शीर्षलेख ['HTTP_MY_HEADER'] 'भी काम करेगा। – 23inhouse