从Rack请求中确定HTTP端口

时间:2012-07-15 13:28:38

标签: ruby rack

我正在开发一个Sinatra网络应用程序,我希望规范化和绝对化一些URL。为此,我使用的是Rack :: Request对象:

before do
  @cached_request = Rack::Request.new(env)
end

def absolutize(path)
  u = URI.parse('/%s' % path) # Ensure leading slash is there
  u.scheme =  @cached_request.scheme
  u.host =  @cached_request.host
  u.port =  @cached_request.port
  u.to_s
end

但是,即使我的应用程序在端口9393上运行,SERVER_PORT变量也有80.我已经检查了env对象的相关信息,但似乎它没有获取请求端口的任何信息。

我应该如何从应用程序中找出这个?我没有在机架规格中看到对变量的引用......

到目前为止,我已尝试在Puma和Webrick上运行rackup文件。

1 个答案:

答案 0 :(得分:1)

好的我明白了。这只发生在通过MarsEdit完成的请求中,因为MarsEdit没有在Host标题中发送端口后缀(这几乎是Rack服务器用于推断服务器端口的所有内容)。

我已经通过错误报告联系了Daniel。