Request.UrlReferrer не работает в IE7 - PullRequest
0 голосов
/ 13 января 2012

У меня есть следующий код:

if (Request.UrlReferrer != null)
        {
            if (Request.UrlReferrer.PathAndQuery.ToLowerInvariant() == "/test/content.htm")
            {
                postbacklink = Request.UrlReferrer.AbsoluteUri.Replace("/TEST/Content.htm", "/Testing.aspx?")  + Request.QueryString;
            }
            else
            {
                postbacklink = Request.UrlReferrer.AbsoluteUri;
            }
        }
        ExtendedLoanView.PostbackLink = postbacklink;

Теперь эта страница доступна в двух разных местах.Это означает, что этот код:

 postbacklink = Request.UrlReferrer.AbsoluteUri.Replace("/TEST/Content.htm", "/Test.aspx?")  + Request.QueryString;

может работать только с одной страницей (Test.aspx) и имеет жесткую кодировку.Так в IE7 Request.UrlReferrer показывает мне это:

Request.UrlReferrer = {http://Testing:12345/PPP/Content.htm}

В то время как в IE8 + я получаю это значение:

Request.UrlReferrer = {http://Testing:12345/PPP/TestingPage.aspx?Name=Xyz&Address=123 YYY

Как мне решить эту проблему?Это беспокоило меня в течение последнего месяца.

1 Ответ

1 голос
/ 16 января 2012

Я бы определенно посоветовал не основывать вашу логику на информации запроса (не более, чем на введенных пользователем значениях). Дело в том, что будет отличаться в разных браузерах, и его действительно можно взломать.

Если вам все еще нужно передавать информацию от клиента к серверу, обязательно проверьте ее. Если вам нужно, чтобы они оставались синхронизированными и имели достоверную информацию, не полагайтесь на то, что дают вам браузеры, а установите его самостоятельно, а затем извлекайте его из места в заданном вами запросе (например, скрытый ввод, элемент управления переменная в viewstate или что-то еще, что позволяет использовать технологию, которую вы используете).

Большинство сайтов справляются с ситуацией, которую вы пытаетесь решить, передавая целевой URL-адрес в самом URL-адресе, в параметре запроса. Например:

http://www.example.com/Login.aspx?returnUrl=/TEST/content.htm

РЕДАКТИРОВАТЬ: Я понимаю, что все, что вы отправляете клиенту, в любом случае очень легко взломать, но если вы установите его самостоятельно, вам будет легче проверить, что оно не было подделано. Примером являются методы проверки ViewState.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...