在Internet Explorer中,Request.ServerVariables("HTTP_REFERER")无法正常工作。
我们有一个要求,比如,有两个不同的网站,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)的等效代码,这将给出类似的结果,如所提到的。
发布于 2012-01-27 18:49:02
您不能依赖HTTP_REFERER的存在:不需要用户代理来设置它。
尝试使用HTTP_HOST:从HTTP1.1开始,主机头是必需的。
If (Request.ServerVariables("HTTP_HOST") <> "www.example2.org") Then发布于 2012-01-27 19:28:12
请检查下面的链接,该链接说明HTTP_REFERER不是HTTP规范的强制成员。
您可以使用服务器变量SERVER_NAME来满足您的需求,它应该可以工作。
编码快乐!!
https://stackoverflow.com/questions/9032005
复制相似问题