2012-05-28 11 views
6

Oto mój kod poniżej:Jaka jest różnica między Request.UserAgent a Request.Browser?

User_Info.Add(!string.IsNullOrEmpty(Request.UserAgent) ? Request.UserAgent : string.Empty);//4:UserAgent 

    HttpBrowserCapabilities browser = Request.Browser; 
    User_Info.Add(!string.IsNullOrEmpty(browser.Browser) ? "Name : " + browser.Browser + " | " + 
                  "Type : " + browser.Type + " | " + 
                  "MajorVersion : " + browser.MajorVersion + " | " + 
                  "MinorVersion : " + browser.MinorVersion : string.Empty);//5:UserBrowser 

Jaka jest różnica między Request.UserAgent i Request.Browser?
Nie mogłem zrozumieć tych ciągów UserAgent!
Czy mógłbyś pokazać kilka przykładów z wyjaśnieniem?

Odpowiedz

7

Request.Browser różni się od Request.UserAgent. UserAgent pobiera nieprzetworzony ciąg agenta użytkownika przeglądarki klienta, a Request.Browser dostarcza informacji o możliwościach przeglądarki. Nie uzyskasz wszystkich funkcji przeglądarki za pomocą UserAgent string.

1

Request.UserAgent jest nieco tajemniczy i wymaga analizy w celu określenia, z której przeglądarki korzysta użytkownik. Ponadto nie zawiera informacji jak co wersja JavaScript przeglądarka obsługuje, czy przeglądarka obsługuje stylów CSS 2.0

Obiekt Request.Browser jest instancją obiektu HttpBrowserCapabilities zawiera wszystkie informacje ...

Ref: http://www.4guysfromrolla.com/articles/120402-1.aspx

10

UserAgent podaje surowy ciąg o przeglądarce. To może wyglądać następująco:

User Agent :: Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1; .NET CLR 1.0.2914)

Request.Browser daje HttpBrowserCapabilities przedmiot która będzie zawierać informacje o wersji przeglądarki wraz z dodatkowymi informacjami na temat możliwości przeglądarki. Na przykład:

  1. czy przeglądarka obsługuje ramek
  2. czy obsługuje pliki cookie?
  3. Obsługa JavaScriptów?
  4. Obsługuje aplety Java? itp

Spójrz na poniższy kod przykładowy:

HttpBrowserCapabilities bc = Request.Browser; 
Response.Write("<p>Browser Capabilities:</p>"); 
Response.Write("Type = " + bc.Type + "<br>"); 
Response.Write("Name = " + bc.Browser + "<br>"); 
Response.Write("Version = " + bc.Version + "<br>"); 
Response.Write("Major Version = " + bc.MajorVersion + "<br>"); 
Response.Write("Minor Version = " + bc.MinorVersion + "<br>"); 
Response.Write("Platform = " + bc.Platform + "<br>"); 
Response.Write("Is Beta = " + bc.Beta + "<br>"); 
Response.Write("Is Crawler = " + bc.Crawler + "<br>"); 
Response.Write("Is AOL = " + bc.AOL + "<br>"); 
Response.Write("Is Win16 = " + bc.Win16 + "<br>"); 
Response.Write("Is Win32 = " + bc.Win32 + "<br>"); 
Response.Write("Supports Frames = " + bc.Frames + "<br>"); 
Response.Write("Supports Tables = " + bc.Tables + "<br>"); 
Response.Write("Supports Cookies = " + bc.Cookies + "<br>"); 
Response.Write("Supports VB Script = " + bc.VBScript + "<br>"); 
Response.Write("Supports JavaScript = " + bc.JavaScript + "<br>"); 
Response.Write("Supports Java Applets = " + bc.JavaApplets + "<br>"); 
Response.Write("Supports ActiveX Controls = " + bc.ActiveXControls + "<br>"); 
Response.Write("CDF = " + bc.CDF + "<br>"); 

do porównywania wersji przeglądarki przeciwko agenta użytkownika, trzeba by użyć operacji String (Zawiera), natomiast w przypadku Request.Browser można porównać przeciwko własności.

+0

Zastanawiam się, czy klasa HttpBrowserCapabilities jest nadal istotna. Umieściłem ten kod w kontrolerze wraz z wieloma innymi właściwościami, które on eksponuje, a następnie przeszedłem na stronę w Chrome, Edge, Safari (dla Windows) i Firefox. Znaczna część zwróconych informacji, takich jak ScreenPixelsHeight = 480 i ScreenPixelsWidth = 640, była taka sama, a także niepoprawna. –

Powiązane problemy