現在、ネットワークの勉強中です。
Referrerという環境変数でユーザが直前にどこのHPにアクセスしていたかという情報が埋め込まれてるみたいなんですが、これは、ブラウザがこの情報を記憶していて、ユーザのブラウザからサーバは情報を取得しているのでしょうか?

あと、Referrerという環境変数はなぜ必要なんでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

#3の回答に対するお礼への補足です。


>ちょっと気になったのですが、自作ブラウザがGETメソッドを使うときに、Host:とかUser-Agent:とかReferer:に何もいれなかった
>りしたら、どうなるんでしょうか?

User-Agentに関して、閲覧しようとしたWEBページによっては、エラーが返って来たり、正しく表示されないかも知れません。
もちろん、WEBページの製作者がUser-Agentを判定し「知らないブラウザはエラーにしよう」とか「IEだったらIE用ページ、NSNだったらNSN用ページを表示、それ以外はエラー」と言う仕掛けを組み込んでいた場合だけですが。

また、iモード用など携帯向けページでは、User-Agentに含まれている詳細な機種情報を見て「この機種にはこのサイズの画像を、この機種にはこのサイズの画像を、この機種では画像が出せないので画像無し」などの細工をしていたりします。

Refererに関して、IEの「お気に入り」から飛んだり、アドレス入力欄にURLを直打ちした場合、Refererが付かない事は良くあります。
#2の参考URLをコピーしてアドレス入力欄に打ち込むとRefererが(none)と表示され、付いていない事が判ります。

Hostに関しては、DNSによりドメインに別名が定義されていた場合の判定に使われたりします。
例えば、ドメイン名の変更があり、新旧どちらのドメインでもアクセス出来るように(old.*****.jpとnew.*****.jpが同じドメインを指す場合など)してある時、旧ドメインでアクセスした場合のみ「ドメインが変更されました」と表示される事が可能になります。
    • good
    • 0

#2の補足です。



>ブラウザが表示したいページをサーバーに要求する時に、ブラウザがサーバーに送っているのです。

この部分でブラウザが何をしているかと言うと、ブラウザはサーバーに対し、以下のような要求を行っています。
(この回答ページからhttp://taruo.net/e/に飛んだ場合。内容は一例であり、実際とは異なります)

GET /e/ HTTP/1.0<改行>
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)<改行>
Referer: http://oshiete1.goo.ne.jp/kotaeru.php3?q=769702<改行>
Host: taruo.net<改行>
Accept: */*<改行>
Accept-Language: ja<改行>
Accept-Encoding: gzip, deflate<改行>
Connection: Keep-Alive<改行>
<改行> ←リクエストの終りを示す空行

このように、全ての情報は、ブラウザがページの内容を取得するリクエストを発行する時に、ブラウザからサーバーに送られます。

この回答への補足

chie65536さん、strifeさん、早速のレスポンスありがとうございます。

パチッ☆-(^ー'*)bナルホド
ネットワークの勉強しているのですが、こんなに詳細な回答はめちゃくちゃありがたいです。やる気がさらに出てきます。

補足日時:2004/02/04 12:50
    • good
    • 0
この回答へのお礼

ちょっと気になったのですが、自作ブラウザがGETメソッドを使うときに、Host:とかUser-Agent:とかReferer:に何もいれなかったりしたら、どうなるんでしょうか?

IEなんかは、わざわざこんな情報までサーバに対して送信しているのか疑問です。

お礼日時:2004/02/04 13:00

まず、参考URLをクリックしてみて下さい。

色々なアクセス情報が表示される筈です。

これらの情報は、サーバーが勝手に取得しているのではありません。

ブラウザが表示したいページをサーバーに要求する時に、ブラウザがサーバーに送っているのです。

HTTP_REFERRERもそうで、ページを要求する前にブラウザがサーバーに送っています。

HTTP_REFERRERの利用方法は、以下の物が考えられます。

・トップページ以外は外部からの直リンクを許さないようにする。
・CGIスクリプトの不正使用の判定。外部に設置されたページからCGIを呼び出していないかどうかを判定する。
・1つ前のページに戻る為のリンクを貼る。
・アクセス解析でリンク元を集計する。

参考URL:http://taruo.net/e/
    • good
    • 0

ええそうです。


クライアントがサーバにいろいろな情報を送っています。そのうちのひとつがHTTP_REFERERです。
http://www.cybersyndrome.net/evc.htmlを見てみてください。このうちのひとつに見つかるでしょう。)
HTTP_REFERERは、直前のページというよりリンク元の情報です。これを応用すればどこのページからリンクされているのかなどを調べたり統計を取ったりすることができます。
ただし、必須ではないので、ブラウザによってはリファラを残さないものもあります。
アクセス解析のリンク元集計もこれを使っているものが多いと思います。

なお、クライアントが送るわけですから、リファラは簡単に偽装可能で、Proxomitronなどの偽装ツールも多くあります。(つまり、信用性が薄いということです。)
以下、参考になりそうなURLを羅列しますので、どうぞごらんになってください。(リンクされなくて不便ですが…。)
環境変数 HTTP_REFERER
http://www.futomi.com/lecture/env_var/http_refer …
HTTP_REFERER の挙動を探る
http://program.station.ez-net.jp/special/network …
HTTP_REFERER とは
http://k-tai.impress.co.jp/cda/article/keyword/1 …

参考URL:http://www.futomi.com/lecture/env_var/http_refer …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング