0

現在、Rails でローカル IP アドレスの検出 (ifconfig、tracepath などを使用) を行って、Rails と同じマシンでホストされているグラフ作成アプリケーションにアクセスしています。「自己 IP アドレス」は Rails の起動時に検出され、一度だけ実行されます。ユーザーがホスト名と 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 でも同じことができますか? request.hostURLでホスト名またはIPv6アドレスを使用してRailsに接続する場合、IPv6環境ではどのように見えますか?

Rails を IPv6 環境で実行している人なら誰でも上記のことを検証できると思いました。ありがとう。

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.hostHTTPHostヘッダーの内容が含まれていることに注意してください。したがって、ここにホスト名または IPv4 アドレスが表示される場合があります。いずれにせよ、それをそのまま使用して URL を作成できるはずです。

于 2013-05-22T22:25:11.810 に答える