- - PR -
ジャンプ元URLの取得方法について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-26 21:29
こんにちわ!
ジャンプ元URLの取得方法について質問です。 あるサイト(SSL)からジャンプしてきた場合のみ別の処理をさせたいのですが Response.UrlReferrerがnullになってしまい取得できません。 ちなみにhttpサイトからのジャンプの場合は取得できます。 また、取得する側はASP.NETでSSLは使用しない環境です。 UrlReferrerを利用しない方法でも何でも情報をお持ちの方 是非教えてください。よろしくお願いします。 | ||||
|
投稿日時: 2004-01-27 09:45
本人追記ですw
Response.Redirectやリンクからの遷移の場合は SSLでも遷移元アドレスを取得できるようです。 ただし、Formタグのsubmitで遷移した場合は取得できません。 SSLサイトのFormタグのsubmitで遷移されてきた場合 遷移元アドレスを取得する良い方法は無いでしょうか? | ||||
|
投稿日時: 2004-01-27 10:05
ここを見てください。
http://www.studyinghttp.net/request.html#Referer Refererヘッダを送っているのはクライアント(ブラウザ)です。 「私はここから来ましたよ」という情報をサーバーに知らせるわけです。 そして始めに示したリンク先に、「クライアントがセキュリティ上の観点から、送るべきではないと判断した場合には送らなくてもかまいません」と書いてあります。 SSLを使ってアクセスしたサイトなので、おそらくクライアントがRefererヘッダを送っていないのではないでしょうか。 と思ったらへちまさんの2度目の書き込みが・・・ >Response.Redirectやリンクからの遷移の場合はSSLでも遷移元アドレスを取得できるようです。 「Redirectやリンク」と「ジャンプ」というのは何が違いますか。 ジャンプというのは具体的にどういう動作です? 「Javascriptで新しいウィンドウ」とかだったらおそらくRefererは送りません。 ---------------- あと、 Response.UrlReferrer ではなくて Request.UrlReferrer ではないですか? [ メッセージ編集済み 編集者: 一郎 編集日時 2004-01-27 10:06 ] | ||||
|
投稿日時: 2004-01-27 10:55
まったく一朗さんの言うとおりですw
最初は「ジャンプ」=「全ての遷移行動」と思ってたのですが 場合によって挙動が違うことが分かってきました。 自分なりにまとめた結果です。 クライアントはIE6SP1の場合 HTTP →(リンク・フォームのサブミット)→HTTP ・・・ UrlReferrer有り HTTP →(リンク・フォームのサブミット)→HTTPS ・・・ UrlReferrer有り HTTPS→(リンク・フォームのサブミット)→HTTPS ・・・ UrlReferrer有り HTTPS→(リンク) →HTTP ・・・ UrlReferrer有り HTTPS→(フォームのサブミット) →HTTP ・・・ UrlReferrer無し の用です。困った仕様ですw UrlReferrer以外に遷移元URLを取得する方法は無い物でしょうか? HTTPS→(フォームのサブミット)→HTTP 不運にもこれがやりたいわけです。 | ||||
|
投稿日時: 2004-01-27 11:48
「フォームのサブミット」というのはRedirect()等で別のページを表示しているということですよね。
SSL上で見るページAと、普通のページBがあったとして、 ブラウザにAを表示 -> ブラウザがAにポストバック -> Aのサーバー側プログラム内でRedirect(B) -> Bのサーバー側プログラムの中でRefererにより処理を分ける ということなら、Refererヘッダを渡す渡さないはASP.NET内部の仕様の問題ですので、ユーザーはいじることはできないと思います。 いっそのこと、参照元を引数で渡したらどうでしょう。 URLの?の後に以下のように付けて http://www.aaaaaaa.co.jp/BBB/CCC.aspx?Referer=xxxx.aspx ヘッダに情報があればそれを使い、なければ引数のRefererを見るとか。 あまりスマートでない気もしますが。 ------- やばい、適当にURL書いたら実際にあるサーバーだった。 変えました。 [ メッセージ編集済み 編集者: 一郎 編集日時 2004-01-27 11:51 ] | ||||
|
投稿日時: 2004-01-27 12:14
すばやい返信有難うございます!
GETやPOSTで送信するのは面白くないですが、そう言う方法しかないようですね。 それから、私の「フォームのサブミット」と言う言葉が 曖昧な表現で申し訳ありませんでした。 正確には <form method="post" action="http://aaaaa.com/bbbbb.aspx"> <input type="hidden" name="usercd" value="00005"> <input type="submit" value="Login"> </form> こう言うフォームから送信した場合と言う意味でした。 これはサーバーサイドの問題ではなくクライアントがUrlReferrerを付加するかどうか 何ですよね?このときIEは HTTPS→HTTP ではUrlReferrerを付加しないようです。 ただし HTTP→HTTP HTTP→HTTPS HTTPS→HTTPS の場合ではUrlReferrerを付加される仕様のようです。 | ||||
|
投稿日時: 2004-01-27 13:11
あ、なるほど。
ブラウザから直接ってことですね。 その状態なら、確かにRefererを送るか送らないかを決めているのはブラウザ(IE)ですね。 送られてこない情報はどうしようもないので、引数等で自分で送る以外に方法はないと思います。 <input type="hidden">とかで送るのがいいかも。 | ||||
|
投稿日時: 2004-01-27 23:55
とのことですが、この場合にReferrerを送ってしまうと、SSLで接続した際にリクエストで送ったURLの内容が、非SSLのサーバから読み取れてしまうため、セキュリティ上問題になる可能性があるわけです。 # HTTPSサイトへのリクエストの内容が、HTTPのサイトへ送られてしまう。 |
1