2012-01-27 18 views
1

Request.ServerVariables( "HTTP_REFERER")がInternet Explorerで動作していません。Request.ServerVariables( "HTTP_REFERER")がIEで動作していません

Googleには、2つの異なるウェブサイト(www.example1.comとwww.example2.com)があります。 www.example1.comを使用するすべてのユーザーをwww.example2.comにリダイレクトする必要があります.www.example2.comのドロップダウンリストからwww.example1.comを意図的に選択すると、リダイレクトせずに開く必要があります。

これは私がリダイレクトを適用したことに基づいてwww.example1.comを要求しているユーザーを特定できるように、www.example1.comでRequest.ServerVariables( "HTTP_REFERER")を使用しました。これは、MozillaやGoogle Chromeのようなすべての標準ブラウザではうまくいきましたが、Internet Explorerには適用されませんでした。

私はそれはIE以外のすべてのブラウザで正常に働いていたwww.example1.com

<%if(Request.ServerVariables("HTTP_REFERER") <> "http://www.example2.org/") then 

URL = "http://api.ipinfodb.com/v3/ip-country/?key=c184c2d089c7763a81d7701a662b57fe3bf90dbfd8bf60d29948878531e24472&ip=" &   Request.ServerVariables("REMOTE_ADDR") 
       Set conn = Server.CreateObject("MSXML2.ServerXMLHTTP")  
      conn.open "GET", URL, False, "", "" 
      conn.send   
       UserCountry = conn.ResponseText 
       conArray = Split(UserCountry, ";") 
      if ((conArray(3) = "US")) Then 
       response.redirect("http://www.example2.org/") 
      end if 
end if    
%> 

のためのASPコードの下に使用。これについて誰にでも知らせることができますか?私と同じような結果を与えるすべてのブラウザ(IEを含む)のための同等のコードを私にお勧めしますか?

答えて

2

が存在することに依存することはできません。ユーザエージェントは設定する必要はありません。

代わりにHTTP_HOSTを使用してください。ホストヘッダーはHTTP 1.1以降で必須です。

If (Request.ServerVariables("HTTP_HOST") <> "www.example2.org") Then 
+0

提案に感謝しています。ホストヘッダーとはどのようなものなのか、どのように役立つのかを教えてください。 – 565

+0

@Praveen:http://en.wikipedia.org/wiki/HTTP_headersのヘッダーのリストがあります。簡単に言えば、 'Host'ヘッダーには、そのページにアクセスするために使用されたドメイン名が含まれていなければなりません。 – LukeH

+0

:私はHTTP_HOSTを使用しましたが、現在のページを取得していますホスト名要求されたページの正確なドメイン名が必要なような要件が必要です。 HTTP_REFERERは正確な出力をレンダリングしますが、IEでは動作しません。アクチュアール出力が期待されるすべてのブラウザで動作するメソッドを指定できますか? – 565

0

HTTP_REFERERがHTTP仕様の必須メンバーではないという下記のリンクを確認してください。

要件にSERVER_NAMEというサーバー変数を使用できます。これは機能するはずです。

ハッピーコーディング!

+1

@ Ravia:ありがとうございます。SERVER_NAMEはサーバー名を返すだけです。リクエストされたページのサーバー名が正確であるような要件が必要です。これはどのような方法を提案できますか? – 565

+0

サーバのIPアドレスを知っている場合は、REMOTE_ADDRを使用するか、REQUEST_URIを試してみてください。 – Ravia

関連する問題