16

Ну, я работал над защитой разделяемого сеанса на основе User-Agent между субдоменами.IE 11 отправляет разные заголовки User-Agent в разные поддомены

Я был очень удивлен, что он работает хорошо, пока в IE не был анонсирован предварительный просмотр. Есть 2 поддоменов

example.com и sub.example.com

Я перехватил запросы обоих доменов и, кажется, что USER-AGENT заголовок HTTP отправляется к каждому домену отличается.

Запрос на example.com имеет:

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; с.в.: 11,0) как Gecko

Запрос sub.example.com имеет:

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Центр ПК 6.0; .NET4.0C; .NET4.0E; BRI/1; MS-RTC LM 8; rv: 11,0), как Gecko

Вы не знаете, в чем причина этого странного динамического поведения?

ответ

17

Корпорация Майкрософт использует данный сайт для использования UA-spoofing (через список просмотра совместимости), и это заставляет IE отправлять пользовательскую строку UA.

CompatView на основе UA подмена была включена в IE8 в 2008 году: http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx

И в IE10 +, он стал богаче, с каждым сайтом подменой для того, чтобы лучший опытом. См. http://blogs.msdn.com/b/ieinternals/archive/2013/09/21/internet-explorer-11-user-agent-string-ua-string-sniffing-compatibility-with-gecko-webkit.aspx для изучения этой темы.

+0

Привет Эрик и спасибо за ответ. Я не совсем убежден, но это действительно может быть причиной. Я проверю, могу ли я отключить это – WooDzu

+1

@EricLaw: Это была моя первая реакция, но обратите внимание, что он отправляет тот же номер версии на оба сервера. Оба этих UA - 'rv: 11.0'; ни одна из них - «устаревшая строка User-Agent IE7». – RichieHindle

+0

В IE11 функция просмотра списка совместимости была сделана более богатой и позволяет совместным взломам на сайте. Например, если вы посмотрите на строку UA при загрузке go.microsoft.com, строка UA будет «Mozilla/5.0 (Windows NT 6.3, Win64; x64; Trident/7.0; rv: 11.0), например, Gecko/20100101 Firefox/12.0 " – EricLaw

7

Официальный Microsoft Документация на MSDN:

Цитаты:

Для многих старых сайтов, некоторые из наиболее заметных обновлений для IE11 Привлекать строка пользовательского агента. Вот что сообщалось IE11 на Windows, 8.1:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko 

Вот строка для IE11 на Windows 7:

Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko 

В редких случаях может возникнуть необходимость однозначно идентифицировать IE11.Для этого используйте токен Trident.

Не так ли, говорят, «как Гекко»? ;)

 Смежные вопросы

  • Нет связанных вопросов^_^