IE 11 отправляет разные заголовки User-Agent в разные субдомены
Хорошо, я работал над защитой совместного доступа на основе User-Agent между субдоменами.
Я был очень удивлен, что он хорошо работает, пока в IE не был опубликован предварительный просмотр. Есть 2 поддомена
example.com и sub.example.com
Я перехватил запросы на оба домена, и кажется, что HTTP-заголовок USER-AGENT, отправляемый в каждый домен, отличается.
Запрос на example.com имеет:
User-Agent: Mozilla/5.0 (Windows NT 6.1, WOW64; Trident/7.0; rv: 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
Есть ли у вас какие-либо идеи, в чем причина этого странного динамического поведения?
Ответы
Ответ 1
У Microsoft есть соответствующий сайт, настроенный на использование UA-spoofing (через список просмотра совместимости), и это заставляет IE отправлять пользовательскую строку UA.
В 2008 году в IE8 в IE8 была включена спуфинг UA на основе CompatView:
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 для изучения этой темы.
Ответ 2
Официальная документация Microsoft по MSDN:
Котировки:
Для многих устаревших веб-сайтов некоторые из наиболее заметных обновлений для IE11 включают строку user-agent. Вот что сообщалось для 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.
Разве это не приятно, они говорят "как Гекко"?;)