0

我们目前正在 Rails 中进行本地 IP 地址检测(使用 ifconfig、tracepath 等),以访问与 Rails 托管在同一台机器上的图表应用程序。在 Rails 启动期间检测到“自身 IP 地址”,并且只执行一次。假设用户可以使用主机名和 IP 地址访问 Apache/Rails 服务器,我可以安全地使用request.host(在用户登录应用程序后)在<img>标签中创建 URL(本质上是图表应用程序返回的图像)在 IPv4 和 IPv6 环境中?目前它适用于 IPv4 地址,如下所示:

class ApplicationController < ActionController::Base
    CHARTS_BASE = ''
    def set_chart_url
      chart_url = MYAPP_CONFIG["chart_base"]
      chart_url.gsub!("$chart_host", request.host)
      CHARTS_BASE.replace(chart_url + 'charts?')
    end

class ReportController < ApplicationController
  before_filter :set_chart_url

看法:

<div>
  <img src="<%=CHARTS_BASE + @opt_graph-%>" alt="Graph"/>
</div>

IPv6 也可以这样吗?在使用 URL 中的主机名或 IPv6 地址连接到 Rails 时,在 IPv6 环境中request.host会是什么样子?

我认为任何已经在 IPv6 环境中运行 Rails 的人都可以验证上述内容。谢谢。

4

1 回答 1

1

IPv6 地址在括号中给出。

我刚刚生成了一个简单的 hello world 控制器并添加到它的视图中:

<%= request.host %>

然后我启动了webrick,rails server -b ::然后http://[2001:db8:38c3:1189:c8d3:210f:f297:ba13]:3000/在我的浏览器中访问。输出是:

首页#index

在 app/views/home/index.html.erb 中找到我

[2001:db8:38c3:1189:c8d3:210f:f297:ba13]


注意request.host包含 HTTPHost标头的内容。因此,您可能会在此处看到主机名或 IPv4 地址。无论如何,您应该能够按原样使用它来构造 URL。

于 2013-05-22T22:25:11.810 回答