Что означает то, когда IE сообщает о двух версиях в UserAgent?

Я вижу случаи, где IE useragent строка имеет несколько частей, сообщающих, чтобы быть различными версиями. Например:

   Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 
   {B93AEBFF-7B72-44EA-B006-8CB078CC1911}; 
   Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; 
   .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; 
   .NET CLR 3.5.30729)

Таким образом, это утверждает, что было MSIE 8.0, но также и MSIE 6.0. Это означает что-либо специальное? Действительно ли это - запас IE или является там чем-то специальным об этом?

Я спрашиваю, потому что я вижу странное поведение с браузером, который сообщает о нескольких версиях, но не с другим IE8.0, который требует единственной версии:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; 
Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; 
.NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)

Не уверенный, если бы useragent имеет какое-либо отношение к нему, но я думал, что спросил бы.

Примечание [Обновления], которое я не кодирую против конкретных версий браузера, я просто, заметило это как различие между браузером, который вел себя странно и те, которые не были. Я хотел знать то, что заставит некоторый IE8.0 сообщать, что они - также другие IE6.0 нет.

9
задан Parand 12 August 2010 в 01:30
поделиться

3 ответа

Версия 6.0 фактически заключена в круглые скобки версии 8.0. (Конечно, ни один из них не является действительным согласно грамматике HTTP, но в наши дни почти никто не рассматривает его как структурированную строку.)

Этот пост кажется единственным результатом для B93AEBFF-7B72-44EA-B006-8CB078CC1911, что подозрительно.

1
ответ дан 4 December 2019 в 22:26
поделиться

Ответ Лу правильный, но я остановлюсь на нем подробнее.

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

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

Поэтому вполне возможно, что веб-сайт, который, как вы видите, ведет себя некорректно, выполняет проверку пользовательского агента, а не выполняет ее должным образом. Как сказал Лу, код JavaScript не должен пытаться анализировать пользовательский агент (который является очень хрупким способом тестирования браузера и, скорее всего, не работает с будущими версиями браузера), а вместо этого проверяет возможности браузера. Текущая популярная библиотека JavaScript (например, jQuery) делает это правильно (еще одна причина для их использования), но все же случается, что написанный пользователем код JavaScript будет пытаться использовать строку пользовательского агента.

6
ответ дан 4 December 2019 в 22:26
поделиться

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

Никогда не кодируйте строку пользовательского агента, кодируйте возможности:

http://kangax.github.io/cft/

1
ответ дан 4 December 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: