这个标题不言自明.有没有办法得到标题(除了Rack::Request.env[])?

推荐答案

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散列中).

Ruby相关问答推荐

有没有办法把条件语句写得更干净?

CarrierWave Multi-uploader重命名现有文件

在Ruby中按字母顺序对数组中的数组进行排序?

如何替换 ruby​​ 中模式的每个实例?

如何使 Sinatra 通过 HTTPS/SSL 工作?

我在哪里可以找到积极开发的 Ruby lint 工具?

构造Ruby的现代方法是什么?

在 MacOS Sierra 上使用 RMagick 2.16 的 ImageMagick 7 找不到 MagickWand.h

为 Ruby 模块中的每个方法调用执行代码

如何找到安装 Ruby Gem 的路径(即 Gem.lib_path c.f. Gem.bin_path)

RSpec: stubbing Kernel::sleep?

ruby命令在我的 Mac 上没有任何作用

理解|| Ruby 中 If 条件中的 OR 运算符

Ruby - 查看端口是否打开

如何验证 RSpec 中的退出和中止?

升级到 Rubygems 1.5.0 后,Bundler 抛出未初始化的常量 Gem::SilentUI (NameError) 错误

带有添加和删除参考的 Rails 迁移

如何在 Ruby 中将类构造函数设为私有?

我可以在 OS X v10.6.8 上升级到当前版本的 Ruby (2.2.3) 吗?

如何在 Ruby 中创建整数循环?