Request.ServerVariables(“HTTP_REFERER”)在IE中不起作用

时间:2012-01-27 10:37:05

标签: asp-classic http-headers http-referer

Request.ServerVariables(“HTTP_REFERER”)在Internet Explorer中不起作用。

我们有一个要求,有两个不同的网站,www.example1.com和www.example2.com。我必须将使用www.example1.com的所有用户重定向到www.example2.com,当我们故意在www.example2.com的下拉列表中选择www.example1.com时,它必须在没有任何重定向的情况下打开。

为此,我在www.example1.com中使用了Request.ServerVariables(“HTTP_REFERER”),以便根据我应用的重定向识别谁在请求www.example1.com。这在所有标准浏览器(如Mozilla和Google Chrome)中都很有用,但不适用于Internet Explorer。

我在www.example1.com上使用了以下ASP代码

<%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            
 %>

除了IE之外,它在所有浏览器中都运行良好。任何人都可以知道吗?你能否告诉我所有浏览器(包括IE)的等效代码,它会给出与上述类似的结果。

2 个答案:

答案 0 :(得分:2)

您不能依赖HTTP_REFERER存在:用户代理不需要设置它。

请尝试使用HTTP_HOST:自HTTP 1.1以来,主机标头是必需的。

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

答案 1 :(得分:0)

请查看下面的链接,其中说HTTP_REFERER不是HTTP规范的强制成员。

您可以根据需要使用服务器变量SERVER_NAME,它应该可以使用。

快乐的编码!!