request.headers
gibt keinen Hash zurück, sondern eine Instanz von ActionDispatch::Http::Headers
, die ein Wrapper um Rack-env ist.
ActionDispatch::Http::Headers
implementiert viele Methoden wie []
und []=
, die es wie ein Hash verhalten, aber es hat keinen Vorrang vor den Standard inspect
, daher können Sie nicht sehen, die Schlüssel-Wert-Paare von nur p
oder pp
es.
Sie können jedoch finden Sie in den Request-Header im Rack env:
pp request.headers.env.select{|k, _| k =~ /^HTTP_/}
Denken Sie daran, dass die Request-Header in Rack-env sind die upcase
d, underscore
d und HTTP_
Präfix Version der ursprünglichen HTTP-Request-Header .
UPDATE
Eigentlich eine endliche Menge von Request-Header gibt, die nicht HTTP_
Präfix. Diese (groß geschriebenen und unterstrichenen) Header-Namen werden in ActionDispatch::Http::Headers::CGI_VARIABLES
gespeichert. Ich liste sie unter:
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
So ist die Vollversion von Listing Request-Header wäre
pp request.headers.env.select{|k, _| k.in?(ActionDispatch::Http::Headers::CGI_VARIABLES) || k =~ /^HTTP_/}
es sieht aus wie 'Anfrage.Header ['HTTP_MY_HEADER'] 'würde auch funktionieren. – 23inhouse