我正在开发一个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文件。
答案 0 :(得分:1)
好的我明白了。这只发生在通过MarsEdit完成的请求中,因为MarsEdit没有在Host
标题中发送端口后缀(这几乎是Rack服务器用于推断服务器端口的所有内容)。
我已经通过错误报告联系了Daniel。