HTTP头在传递给应用程序的Rack environment个文件中可用:
HTTP_
个变量:与客户机提供的HTTP请求头相对应的变量(即名称以HTTP\开头的变量).这些变量的存在或不存在应与请求中相应HTTP头的存在或不存在相对应.
因此,HTTP头的前缀是"HTTP_",并添加到哈希中.
下面是一个提取和显示它们的小程序:
require 'rack'
app = Proc.new do |env|
headers = env.select {|k,v| k.start_with? 'HTTP_'}
.collect {|key, val| [key.sub(/^HTTP_/, ''), val]}
.collect {|key, val| "#{key}: #{val}<br>"}
.sort
[200, {'Content-Type' => 'text/html'}, headers]
end
Rack::Server.start :app => app, :Port => 8080
当我运行这个程序时,除了Chrome或Firefox显示的HTTP头之外,还有一个"VERSION:HTPP/1.1"(即,一个带有键"HTTP_VERSION"和值"HTTP/1.1"的条目被添加到env散列中).