2012-01-27 4 views
1

Request.ServerVariables ("HTTP_REFERER")가 Internet Explorer에서 작동하지 않습니다.Request.ServerVariables ("HTTP_REFERER")가 IE에서 작동하지 않습니다.

두 가지 다른 웹 사이트 (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 및 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 코드 아래를 사용했다. 아무도 이것에 관해서 알 수 있습니까? 내게 모든 브라우저 (인터넷 익스플로러 포함)에 대해 동등한 코드를 제안 해주십시오. 그러면 비슷한 결과를 얻을 수 있습니다.

답변

2

HTTP_REFERER이있는 것은 신뢰할 수 없습니다. 사용자 에이전트는 설정하지 않아도됩니다.

대신 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

관련 문제