Request.ServerVariables ("HTTP_REFERER") не работает в IE - PullRequest
1 голос
/ 27 января 2012

Request.ServerVariables («HTTP_REFERER») не работает в Internet Explorer.

У нас есть такое требование, как, например, есть два разных сайта: www.example1.com и www.example2.com,Я должен перенаправить всех пользователей, которые используют www.example1.com, на www.example2.com, и когда мы намеренно выберем www.example1.com в раскрывающемся списке www.example2.com, он должен открыться без перенаправления.

Для этого я использовал Request.ServerVariables («HTTP_REFERER») на www.example1.com, чтобы я мог определить, кто запрашивает www.example1.com, на основании того, что я применил перенаправление.Это прекрасно работает во всех стандартных браузерах, таких как Mozilla и Google Chrome, но не применяется для Internet Explorer.

Я использовал приведенный ниже код ASP для 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            
 %>

Он работал нормально ввсе браузеры, кроме IE.Кто-нибудь может знать об этом?Не могли бы вы предложить мне эквивалентный код для ВСЕХ БРАУЗЕРОВ (включая IE), который дал бы результаты, аналогичные упомянутым.

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Нельзя полагаться на присутствие HTTP_REFERER: пользовательские агенты не обязаны его устанавливать.

Попробуйте вместо этого использовать HTTP_HOST: заголовок хоста является обязательным, поскольку HTTP 1.1.

If (Request.ServerVariables("HTTP_HOST") <> "www.example2.org") Then
0 голосов
/ 27 января 2012

Пожалуйста, проверьте ниже ссылку, которая говорит, что HTTP_REFERER не является обязательным членом спецификации HTTP.

Вы можете использовать серверную переменную SERVER_NAME, и она должна работать.

Удачного кодирования !!

...