16

Bene, ho lavorato a una protezione della sessione condivisa basata su User-Agent tra sottodomini.IE 11 invia intestazioni utente-agente diverse a sottodomini diversi

Sono rimasto estremamente sorpreso dal fatto che ha funzionato bene fino a quando l'anteprima di IE 11 è stata rilasciata di recente. Ci sono 2 sottodomini

example.com e sub.example.com

Ho intercettato le richieste di entrambi i domini e sembra che User-Agent HTTP Header viene inviato a ciascun dominio è diverso.

Richiesta di example.com ha:

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv: 11,0) come Gecko

Richiesta a sub.example.com ha:

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; Media Center PC 6.0; .NET4.0C; .NET4.0E; BRI/1; MS-RTC LM 8; rv: 11.0) come Gecko

Avete qualche idea di quale sia la ragione di questo strano comportamento dinamico?

risposta

17

Microsoft ha configurato il sito in questione per utilizzare UA-spoofing (tramite l'elenco Visualizzazione Compatibilità) e ciò fa sì che IE invii una stringa UA personalizzata.

CompatView a base di spoofing UA è stato attivato in IE8 nel 2008: http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx

E in IE10 +, è ottenuto più ricco, con spoofing per-sito per consentire la migliore esperienza. Vedi http://blogs.msdn.com/b/ieinternals/archive/2013/09/21/internet-explorer-11-user-agent-string-ua-string-sniffing-compatibility-with-gecko-webkit.aspx per un'esplorazione di questo argomento.

+0

Ciao Eric e grazie per la risposta. Non sono del tutto convinto, ma questa potrebbe essere la ragione. Verificherò se posso disabilitare lo – WooDzu

+1

@EricLaw: anche questa è stata la mia prima reazione, ma nota che sta inviando lo stesso numero di versione a entrambi i server. Entrambi questi UA sono 'rv: 11.0'; né "la legacy IE7 User-Agent string". – RichieHindle

+0

In IE11, la funzionalità Elenco di visualizzazione compatibilità è stata arricchita e consente gli hack per sito compatibili. Ad esempio, se si guarda la stringa UA durante il caricamento di go.microsoft.com, la stringa UA è "Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; rv: 11.0) come Gecko/20100101 Firefox/12.0 " – EricLaw

7

ufficiale Microsoft documentazione su MSDN:

Citazioni:

per molti siti web legacy, alcuni degli aggiornamenti più visibili per IE11 coinvolgono il stringa user-agent. Ecco ciò che è riportato per IE11 su Windows 8.1:

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

Ecco la stringa per IE11 su Windows 7:

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

In rari casi, potrebbe essere necessario identificare in modo univoco IE11.Usa il token Trident per farlo.

Non è bello, si dice "come Gecko"? ;)