Ricavare Browser utente con ASP.NET: ottenere e leggere l’user agent del browser
Vediamo come determinare le informazioni del browser utilizzando la proprietà Request.Browser. Codici ed esempio.
In ASP.NET l’oggetto Request include una proprietà denominata Browser nella quale sono contenute informazioni sulle funzionalità del browser client, quali ad esempio nome del browser, versione del browser ed eventuale supporto per JavaScript, controlli ActiveX, cookie e frame.
In ASP.NET è possibile accedere all’insieme Request.ServerVariables oppure utilizzare la nuova proprietà Request.UserAgent per recuperare il valore relativo all’intestazione HTTP_USER_AGENT. È possibile analizzare questa stringa per determinare il nome del browser, le versioni principali e secondarie del browser e se il browser è una versione beta.
Nell’elenco seguente sono incluse due stringhe user agent di esempio:
Quando si utilizza la versione beta di Microsoft Internet Explorer 6.0, è possibile visualizzare una stringa user agent analoga a quella seguente: User Agent :: Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1; .NET CLR 1.0.2914)Quando si utilizza Internet Explorer 5.5, è possibile ricevere la seguente stringa user agent: User Agent :: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)Quando si utilizza Mozilla/Firefox la stringa user agent è la seguente: Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Una delle motivazioni principali dietro la creazione di una funzione di rilevamento del browser è che alla fine degli anni ’90 il server doveva essere in grado di indirizzare gli utenti a un opportuno insieme di pagine web personalizzate per un particolare browser (Internet Explorer o Mozilla). Oggi, tuttavia, raramente si trovano siti web che hanno pagine separate per i diversi browser, in gran parte perché Internet Explorer di Microsoft è arrivato a dominare il mercato dei browser, ma anche perché ormai tutti i più importanti browser interpretano le informazioni relative ai siti in modo abbastanza simile. Quindi, perché uno oggi dovrebbe fare il rilevamento del browser? Una possibile ragione potrebbe essere per l’esclusione del browser stesso. Per esempio se le intranet di una società si aspettano richieste e accessi da un solo tipo di browser, il progettista web può sfruttare appieno le caratteristiche tipiche di quel browser che potrebbero mancare in versioni precedenti. Pertanto, un utente che visitasse la intranet aziendale con un browser non standard (sia esso un altro browser o una versione precedente del browser accettato) verrebbe indirizzato a una pagina che spiega che l’utilizzo della rete Intranet richiede il browser standard della società.
Ma c’è anche un altro motivo: quando i motori di ricerca indicizzano un sito, inviano un "crawler" per visitare le varie pagine del sito e aggiungerli al loro database. Tipicamente questi crawler usano una stringa User-Agent che indica che sono crawler (e non utenti in tempo reale).
ASP.NET fornisce un metodo molto semplice per determinare le informazioni del browser: la proprietà Request.Browser, che è un’istanza dell’oggetto HttpBrowserCapabilities. L’oggetto BrowserCapabilities contiene proprietà che descrivono le funzioni disponibili in un browser particolare. Queste proprietà, che sono elencate nella documentazione tecnica, comprendono:
- ActiveXControls - un valore booleano, che indica se il browser supporta i controlli ActiveX
- AOL - un valore booleano, che indica se il browser è un browser fornito da AOL
- Cookies - un valore booleano, che indica se il browser supporta i cookie
- Crawler - un valore booleano, che indica se il browser è un web crawler del motore di ricerca
- Frames - un valore booleano, che indica se il browser supporta i frame
- JavaApplets - un valore booleano, che indica se il browser supporta applet Java
- MajorVersion - versione principale del browser; la versione principale di IE 5,3 sarebbe 5
- MinorVersion - versione principale del browser; la versione minore di 5,3 IE sarebbe 3
- Platform - una stringa che specifica la piattaforma dell’utente, come ad esempio WinNT, Win95, UNIX, ecc
- VBScript - un valore booleano, che indica se il browser supporta lato client codice VBScript
Si noti che questi valori booleani specificano se il browser è in grado di supportare tali caratteristiche. Per esempio, IE 6.0 supporta i cookie, quindi, se volete verificare se il browser dell’utente supporta i cookie utilizzando la proprietà Request.Browser, verrà restituito un valore True per ogni utente che utilizza IE 6.0. Tuttavia, gli utenti possono configurare il proprio browser in modo che non accetti i cookies, indipendentemente dalla configurazione dell’utente: la proprietà Cookies restituisce sempre True se il browser dell’utente è capace di supportare i cookie.
L’esempio seguente visualizza le proprietà del browser dell’utente:
<script language="VB" runat="server"> Sub Page_Load(sender as Object, e as EventArgs) ltlBrowserName.Text = Request.Browser.Type & ", " & Request.Browser.Platform ltlAllData.Text = "Tipo = " & Request.Browser.Type & "<br>" ltlAllData.Text &= "Nome = " & Request.Browser.Browser & "<br>" ltlAllData.Text &= "Versione = " & Request.Browser.Version & "<br>" ltlAllData.Text &= "Major Version = " & Request.Browser.MajorVersion & "<br>" ltlAllData.Text &= "Minor Version = " & Request.Browser.MinorVersion & "<br>" ltlAllData.Text &= "Piattaforma = " & Request.Browser.Platform & "<br>" ltlAllData.Text &= "E’ Beta = " & Request.Browser.Beta & "<br>" ltlAllData.Text &= "E’ un Crawler = " & Request.Browser.Crawler & "<br>" ltlAllData.Text &= "E’ AOL = " & Request.Browser.AOL & "<br>" ltlAllData.Text &= "E’ Win16 = " & Request.Browser.Win16 & "<br>" ltlAllData.Text &= "E’ Win32 = " & Request.Browser.Win32 & "<br>" ltlAllData.Text &= "Supporta I Frame = " & Request.Browser.Frames & "<br>" ltlAllData.Text &= "Supporta le Tabelle = " & Request.Browser.Tables & "<br>" ltlAllData.Text &= "Supporta i Cookies = " & Request.Browser.Cookies & "<br>" ltlAllData.Text &= "Supporta VB Script = " & Request.Browser.VBScript & "<br>" ltlAllData.Text &= "Supporta JavaScript = " & Request.Browser.JavaScript & "<br>" ltlAllData.Text &= "Supporta Java Applets = " & Request.Browser.JavaApplets & "<br>" ltlAllData.Text &= "CDF = " & Request.Browser.CDF & "<br>" End Sub</script>Il tuo browser è: <asp:literal id="ltlBrowserName" runat="server" /><p><b><u>Informazioni riguardanti il tuo browser:</u></b><br /><asp:literal runat="server" id="ltlAllData" />
- Articolo precedente Script ASP.NET database, CMS, file manager e development tools
- Articolo successivo Riconoscimento facciale in C#