【发布时间】:2014-11-13 16:29:44
【问题描述】:
我正在尝试使用 Ruby 从 Rack 获取原始格式的请求标头,但还没有弄清楚。我从 request.env 得到的哈希不是我想要的。在该散列中,标题键被大写并带有下划线而不是破折号,如下所示:
"CONTENT_TYPE"=>"应用程序/json; charset=utf-8"
我想要的是在处理之前的标题,我正在寻找:
"Content_Type"=>"application/json; charset=utf-8"
我可以轻松地循环通过 request.env 查找以 HTTP_ 开头的标头并将它们拆分,将每个单词大写并用 gsub 将下划线替换为破折号,以使它们成为我想要的格式。在处理以下标头时,以这种方式保留原始格式变得更加棘手:
“X-BT-RequestId”
我觉得我应该能够以某种方式获得预处理的标头。
我正在编写一个 HTTP 侦听器,它将包装一个请求并将其转发到另一个服务,并且我想以原始格式保留标头。我知道标头应该是不区分大小写的,但是如果我能以原始格式转发它们,我希望以后当我的数据库用户根据这些标头查询值时,可以防止出现区分大小写的问题。
有什么想法吗?
【问题讨论】:
-
你能写一个 Rack 中间件来解决这个问题吗?这是在任何预处理之前使用请求数据的最简单方法。