Будет ли браузер игнорировать чувствительность к регистру заголовка местоположения при ответе на перенаправление? - PullRequest
1 голос
/ 03 сентября 2010

Если браузер запрашивает http://site.com/?q=abc

и получает 301 ответ перенаправления на местоположение http://site.com/?q=ABC (обратите внимание на случай строки запроса)

Возможно ли для браузера игнорироватьразница в регистре и повторный запрос http://site.com/?q=abc, что вызывает бесконечный цикл перенаправления?

Это сценарий, который, по-видимому, происходит в соответствии с журналами IIS.Кажется, он изолирован от Internet Explorer с некоторыми изменениями установленной панели инструментов Ask (в зависимости от значений агента пользователя).Я даже установил панель инструментов Ask, но никак не мог воссоздать этот сценарий.

Я не могу опубликовать исходный код, но для тех, кто чего-то хочет, вот общая логика:

Page_Load(object sender, EventArgs e) 
{
    var q = Request.QueryString["q"];

    if (q == "ABC")
    {
        //render page as usual
    }
    else
    {
        Response.RedirectPermanent("[thispage]?q=ABC");
    }
}

Как видите, если эта страница запрашивается с ?q=abc, она будет перенаправлена ​​один раз, но затем будет отображаться как обычно, поскольку перенаправление переходит на ?q=ABC.

IsЕсть ли сценарий, в котором браузер (в частности, IE с панелью инструментов Ask) может игнорировать случай местоположения перенаправления, вызывая бесконечный цикл?

Ответы [ 2 ]

1 голос
/ 07 сентября 2010

Я не хочу отвечать на свой вопрос, но это, вероятно, лучший способ замкнуть петлю.Чрезмерные перенаправления были на самом деле , а не из-за кода, который я разместил.Меня одурачили.

У нас был HttpModule, который, по иронии судьбы, использовал код, упомянутый в этом ответе .Оказывается, что при установке определенных версий панели инструментов Ask.com в IE строка агента пользователя изменит строку «Ask», что приведет к ложным срабатываниям в этой проверке «IsCrawler».

Из-за оценки «IsCrawler»true в этих случаях был выполнен другой путь кода, который вызвал бесконечный цикл перенаправления.Это произошло из-за изменения регистрационной строки, а не из-за того, что веб-браузер игнорировал заголовок местоположения, о котором я спрашивал.

Так как я даже не ответил на мой вопрос , если кто-то можетопубликуя несколько авторитетный ответ о том, существуют ли какие-либо известные браузеры или сценарии, ведущие себя так, как я о них спрашиваю, я отмечу это как принятый ответ.

0 голосов
/ 03 сентября 2010

Похоже, что панель инструментов Ask внедряется в цикл запроса / ответа, который использует IE. Я никогда не разрабатывал панель инструментов, но держу пари, что она довольно стандартная, так как панели инструментов постоянно перехватывали ввод URL. Если он затем выполнит некоторый внутренний анализ перед фактическим перенаправлением, я мог бы увидеть какой-то небрежно написанный код, выполняющий сравнение без учета регистра.

Я надеюсь, что вы определили очевидные обходные пути, такие как переадресация на ?qq=ABC и использование целевой страницы на q или qq.

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