Attualmente sto esaminando le funzionalità del browser e sto provando a testare i file di definizione del browser forniti con .NET 4.0. Per fare questo sto utilizzando un add-on per Firefox per cambiare l'user agent e ho una semplice pagina che riporta il seguente:Perché ottengo questi strani risultati quando guardo le funzionalità del browser?
Request.UserAgent
Request.Browser.Id
Request.Browser.Browser
Request.Browser.MajorVersion
Request.Browser.MinorVersion
Request.Browser.Platform
Request.Browser.IsMobileDevice
Request.Browser.MobileDeviceManufacturer
Request.Browser.MobileDeviceModel
Generalmente questo dà le informazioni corrette in base agli esempi forniti nei commenti nei file di definizione del browser predefiniti. Tuttavia, di tanto in tanto vedo risultati strani che non riesco a spiegare.
Prendiamo l'esempio iPhone user agent nel file iphone.browser
definizione che è il seguente:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3
Ciò dovrebbe restituire il browser come Safari, che lo fa. Questo dipende dal gateway IPhone con Safari come genitore, che corrisponde al termine Safari
.
Alterare l'agente utente leggermente in modo che emula l'agente utente del client di posta elettronica su un iPhone significa rimuovere la parte terminale della user agent come segue:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko)
Questa società deve restituire Mozilla come browser, in quanto non sarà in grado di eguagliare il termine Safari
. Tuttavia, analizzando questo immediatamente dopo il primo report torna informazioni errate, e indica ancora il browser per essere Safari.
Aggiunta di un .browser
file personalizzato con la cartella App_Browsers
e quindi modificando che sembra costringerlo a essere temporaneamente corretto, quasi come le definizioni o le regole vengono memorizzate nella cache e non funzionare pienamente su ogni richiesta.
Questo funziona anche in questo caso, se si inizia con il secondo agente utente di esempio, dopo aver analizzato il primo, verrà segnalato come Mozilla anziché Safari.
Qualcuno può spiegare questo comportamento o un modo per aggirare il problema? Sta cercando di fare una specie di cache (non così) intelligente in cui fa ipotesi basate su agenti utente simili?
Grazie.
Se ciò che dici è corretto, i risultati sarebbero coerenti, indipendentemente dall'agente utente che viene analizzato per primi, ma questo non è il caso indicato nel mio esempio. Puoi vedere le regole per te stesso, sono memorizzate con la cartella Framework pertinente all'interno di Windows in 'Config/Browsers'. Per quanto riguarda il tuo commento "C'è dell'altro per la partita piuttosto che cercare la stringa" Safari "." questo è esattamente ciò a cui corrisponde, come si può vedere nel file 'safari.browser' dove lo vedrete ereditato da Mozilla e semplicemente lo si estende usando' ' –
rrrr
Ho appena notato la modifica per questo come qualcuno ha votato la domanda, la rivisiterò ad un certo punto quando avrò tempo e approfondirò ulteriormente. – rrrr