Как долго URL-адрес может принимать Internet Explorer 9?

Предыдущие версии Internet Explorer использовали веб-адреса длиннее 2083 символов (см. http://support.microsoft.com/kb/208427). Между тем, Firefox, Opera и Safari могут обрабатывать не менее 80 000.

Версия 9 содержит множество улучшений. Является ли длина URL одним из них?


person Andrew Banks    schedule 15.09.2010    source источник
comment
Принадлежит superuser.com   -  person dogbane    schedule 15.09.2010
comment
@fahd нет, это важная информация для веб-разработчиков   -  person Pekka    schedule 15.09.2010
comment
Длина - это не все, что имеет значение ... важно, как вы можете ее использовать - серверы могут иметь значительно меньший лимит для защиты от некоторых эксплойтов и несанкционированного вторжения.   -  person Arc    schedule 15.09.2010
comment
@Архимедикс абсолютно. Я не говорю, что это хорошо, если длина URL превышает несколько килобайт. Но вопрос о том, где находятся ограничения IE9, является законным вопросом.   -  person Pekka    schedule 15.09.2010
comment
IE9 имеет различные ограничения (адресная строка, A HREF, заголовок местоположения и т. д.). URL-адреса длиной менее 2083 символов будут работать везде. Более длинные URL-адреса можно обрабатывать и перемещаться по ним, но они вызывают различные проблемы (например, результаты не будут кэшироваться), и их следует по возможности избегать.   -  person EricLaw    schedule 16.07.2013


Ответы (3)


Не самый точный ответ, но похоже на 2083 символа в адресной строке и 5165 символов при переходе по ссылке.

(Ни в коем случае не официально, просто подключил URL-адрес с 41 000 символов в тестовый файл HTM и использовал Javascript для запроса длины URL-адреса.)

Обновление:

Чтобы воспроизвести тест, создайте файл HTML с элементом привязки, атрибут HREF которого имеет длину 6000 символов. Откройте файл в браузере и перейдите по ссылке. Затем откройте консоль и проверьте window.location.href.length.

Следуя этой процедуре в IE9 сегодня, он сообщает длину как 5165 символов. Если я загружаю тот же URL-адрес вручную через адресную строку, он сообщает 2083 символа.

Что бы это ни стоило, IE, похоже, усекает URL-адрес перед отправкой запроса. Если я помещу URL-адрес из 24 000 символов в атрибут HREF привязки, IE перейдет по ссылке, но результирующая страница сообщит длину URL-адреса в 5165 символов. Переход по той же ссылке в Chrome приводит к ответу HTTP 414 с моего тестового сервера.

person Farray    schedule 15.09.2010
comment
Раньше я не видел никакой документации по ограничениям 5150 в ссылках, но это определенно объясняет некоторые проблемы, которые у меня возникают, поскольку URL-адреса в моих ссылках > 2083 символов работают, но не работают при вводе в адресную строку. Является ли это просто эмпирическим: вы только что пробовали большие URL-адреса, пока они не потерпели неудачу? - person Chet; 07.08.2012

Я получаю 5120 символов в URL-адресе для Internet Explorer 9.

Ни в коем случае не окончательный тест, но ниже демонстрируется быстрая проверка длины URL-адреса атрибута href в теге привязки.

<html>
    <head>
        <script type="text/javascript">
            function init() {
                var anchor = document.getElementById('anc');
                var valid = true;
                var url = 'http://google.com/?search=';
                var count = url.length;

                while(valid) {
                    url = url + '1';
                    anchor.href = url;
                    count++;
                    valid = anchor.href == url;

                    if(count > 100000) {
                        alert('Test reached 100,000, stopping...');
                        valid = false;
                    }
                }
                alert('Complete, count = ' + count);
            }
        </script>
    </head>
    <body onload="init()">
        <a id="anc" href="http://google.com/">Test</a>
    </body>
</html>
person fungus1487    schedule 10.05.2011
comment
Звучит правдоподобно — примечания к выпуску IE9 включали следующее: В IE9 улучшена поддержка «букмарклетов» — ограничение длины URL-адреса было смягчено. К сожалению, без конкретики. Повторите свой тест — максимальная длина HREF на странице не обязательно совпадает с максимальной длиной URL-адреса, который будет передавать браузер (например, через адресную строку). Необходимо проверить, отправив и проверив журналы сервера, чтобы увидеть, в какой момент происходит усечение (или ошибка?). У кого-нибудь есть окончательная информация для IE9? - person psdie; 07.04.2012

Я написал этот тест который продолжает добавлять 'a' к параметру до тех пор, пока браузер не выйдет из строя

Часть C#:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult ParamTest(string x)
{
    ViewBag.TestLength = 0;
    if (!string.IsNullOrEmpty(x))
    {
        System.IO.File.WriteAllLines("c:/result.txt", 
                       new[] {Request.UserAgent, x.Length.ToString()});
        ViewBag.TestLength = x.Length + 1;
    }

    return View();
}

Просмотр:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script type="text/javascript">
    $(function() {
        var text = "a";
        for (var i = 0; i < parseInt(@ViewBag.TestLength)-1; i++) {
            text += "a";
        }

        document.location.href = "http://localhost:50766/Home/ParamTest?x=" + text;
    });
</script>

Я добавил дополнительные ограничения для IISExpress applicationhost.config и web.config установка maxQueryStringLength="32768".

также Добавлено в конфигурацию

<headerLimits>
    <add header="Content-type" sizeLimit="32768" />
</headerLimits>

что совсем не помогло, наконец, решил использовать скрипач, чтобы удалить реферер из заголовка.

static function OnBeforeRequest(oSession: Session) {
if (oSession.url.Contains("localhost:50766")) {
        oSession.RequestHeaders.Remove("Referer");
        }

Что хорошо получилось.

В IE9 я получил

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
4043
person Matas Vaitkevicius    schedule 19.07.2016