Blog. Just Blog
Какая может быть максимальная длина URL?
Однажды, при разработке одного из проектов, я столкнулся с тем, что требовалась передача большого количества данных из формы методом GET, то есть через адресную строку. У меня под браузером Firefox все работало как надо, а вот у манагеров, сидящих на Internet Explorer, выдавалась ошибка, что запрошенная страница не может быть отображена. Как оказалось, проблема была в том, что получался слишком длинный адрес URL, и ограничения браузера не позволяют его открыть. Причем у Firefox по всей видимости, этот лимит выше, чем у Internet Explorer. Это натолкнуло меня на мысль протестировать различные браузеры на предмет максимально допустимой длины URL, и вот что у меня получилось. Для опытов был написан коротенький скрипт:Code (PHP) : Убрать нумерацию
- if ($_GET['long']) {
- echo '<script>document.write(document.location.href.length);</script>';
- }
- else {
- $long=1;
- for ($i=0; $i<23; $i++) {
- $long=ceil(2*$long);
- echo '<a href="test.php?long='.$long;
- echo '#chk='.str_repeat('x',$long).'_end!">'.$long.'</a><br>';
- }
- }
LimitRequestLine "65535" must not exceed the precompiled maximum of 8190То есть для изменения порогового значения надо перекомпилировать сервер с нужными значениями, а это я сделать не могу, тем более на хостинговом сервере. Пропатчить все проверки в локальной версии сервера тоже не удалось, ограничение все равно оставалось. Поэтому пришлось извернуться через анкор и JavaScript.
Теперь переходим к участникам соревнований. Это Firefox 3.6.24, Firefox 8.0.1, Internet Explorer 8.0, Opera 11.52, Safari 5.1, Chromium 15.0 и Google Chrome 15.0. Сам процесс заключался в том, что я просто открывал по очереди ссылки со страницы в разных браузерах. Под длиной URL подразумевается длина строки от "http://" и до окончания анкора. Результаты тестирования:
- Firefox 3.6.24 и Firefox 8.0.1 открыли все ссылки, но после тестового значения 8388608 анкор в адресной строке браузера перестал отображаться.
- Internet Explorer 8.0 повел себя совсем неадекватно. При открытии ссылок они принудительно усекались до длины 4121 символ и отображались в адресной строке браузера, соответственно, так же. Более короткие ссылки открылись без проблем.
- Opera 11.52 открыла все ссылки без проблем, при отображении даже самых длинных анкоров также никаких замечаний нет.
- Safari 5.1 открыл все ссылки до тестового значения 8388608, а на нем вылетел с фатальной ошибкой.
- Chromium 15.0 и Google Chrome 15.0 с трудом отрисовали даже исходную страницу, периодически вываливая вместо нее свое "Опаньки...". Проблемы с отображением URL в адресной строке браузера начались с тестового значения 32768. Ссылки же удалось открыть лишь до 1048576, дальше появлялось неизменное "Опаньки...".
Просмотров: 2725 | Комментариев: 3
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(26.11.2011 в 17:29):
Я встречал уже немало сайтов, которые передают данные через анкоры + ajax/post. Конечно, не в таких промышленных объемах, но способ вполне имеет место быть, и он позволяет легко обойти ограничения сервера.
user
(26.11.2011 в 01:57):
Opera порадовала... Впрочем при ограничениях сервера фишка становится бесполезной ((
liz
(24.11.2011 в 14:19):
Пасиб!
Добавить комментарий
Заполните форму для добавления комментария
