2012-03-26 77 views
2

我很想知道是否用客戶端腳本檢測訪客瀏覽器比服務器端腳本更可靠?通過JAVASCRIPT或PHP檢測訪問者的瀏覽器?

通過PHP和獲得訪問者瀏覽器非常容易和受歡迎。在前者中,我們分析了標題數組發送的$_SERVER['HTTP_USER_AGENT']。但是,標題並不總是可靠的。 Javascript可以更可靠,因爲它從訪問者的機器獲取訪問者瀏覽器?

我的意思是有可能錯過標題中的用戶代理並通過JavaScript獲取瀏覽器?

UPDATE:請不要介紹jQuery等方法,因爲我熟悉它們。我只想知道,當JavaScript仍然可以檢測瀏覽器時,頭部的用戶代理是否有可能失敗?客戶端和服務器端方法的比較。

+1

你是什麼意思「不總是可靠的」? – dbrin 2012-03-26 04:33:37

+0

這是我的問題的本質。例如,您不能依靠標題來傳遞引薦來源。可能標題未能提供USER_AGENT? – Googlebot 2012-03-26 04:38:41

+0

測試它!兩者都做PHP和JavaScript方法,並嘗試對一些患者的 – 2012-03-26 05:04:49

回答

1

好的。所以User-Agent頭不需要RFC

用戶代理應該在請求中包含這個字段。

http://tools.ietf.org/html/rfc2616#section-14.43

這意味着在服務器端檢測不被保證。

類似地,客戶端檢測通常依賴於navigator.userAgent,但這也是由用戶代理(瀏覽器或不是)提供的,並且類似地不能保證。

因此,回答你的問題是50/50 :)

現在,如果你正在試圖找出如何處理不同的瀏覽器 - 特徵檢測是在這裏你最安全的賭注 - 但是這是一個不同的問題;)

+0

非常好的澄清問題。因此,你的意思是服務器端和客戶端分析沒有太大區別? – Googlebot 2012-03-26 05:34:43

+0

是的,需要注意的是,您可以通過測試某些功能,從JavaScript中瞭解更多關於用戶代理的信息 - 這稱爲功能檢測。 – dbrin 2012-03-26 05:48:22

0

如果您正在使用jQuery看看here

0

不同的角度來看看$.browser():爲什麼我們要檢測的瀏覽器?

在分析的情況下,你可以做的不多。任何做一點研究的人都可以發送他們喜歡的任何用戶代理字符串,但是誰將經歷所有的麻煩;)

如果我們在討論啓用/禁用某個網站的功能,那麼您應該真的要去對於特徵檢測。通過關注瀏覽器可以/不可以做什麼,而不是它自己調用什麼,如果您需要的功能存在,通常可以期望瀏覽器可靠地執行任何操作。

更多信息:http://jibbering.com/faq/notes/detect-browser/

1

我只是使用服務器端檢測。

如果用戶想屏蔽他們的瀏覽器,他們的瀏覽器可能會被屏蔽兩端。

如果你想找出他們的HTML瀏覽器的兼容性,就應該期待輕度破損的網頁,如果他們已經掩蓋他們的瀏覽器(但你應該總是試圖你最好不要有特定瀏覽器的HTML)。如果它的JavaScript兼容性,他們也應該期待一些破損的JavaScript。

+0

感謝您的明確回答! – Googlebot 2012-03-26 05:32:38

+0

作爲一個推論,如果他們有一個蹩腳的瀏覽器,出於某種原因,沒有通過一個合理的用戶代理標題,他們應該已經習慣了一個破碎的頁面已經! – 2012-03-26 05:37:04

2

用戶代理可以被測試服務器端或客戶端,無論哪種方式可以被欺騙。

可以指紋與JavaScript的瀏覽器(看到的方法和對象瀏覽器提供),並用它來推斷瀏覽器,但這是不太精確和JavaScript可以禁用/鎖定/客戶端編輯。

因此,兩者都不是完全可靠的。

它通常是一個壞主意,做基礎上,找出瀏覽器的東西,雖然。

+0

非常不可靠的一點! – Googlebot 2012-03-26 05:45:25