2009-08-21 40 views
0

我想用上面的問題「你正在使用什麼瀏覽器」進行文本輸入。然後當提交表單時,我想比較他們的答案和他們的User-Agent HTTP頭。通用的方式來問他們使用哪個瀏覽器?

我很難確定如何可靠地完成這項工作。

我可以讓他們拼出來,而不是像IE或FF這樣的縮略詞,但Internet Explorer使用「MSIE」作爲它的「標識符不是嗎?

我想過的另一個想法是保留一個User-Agent字符串池,然後向他們提供一個select元素,他們隨機插入4個左右的其他隨機字符串並要求他們選擇他們的字符串。我擔心沒有技術的用戶會因爲這個問題而貽誤足夠的時間,但這是一個問題。我想我可以使用一些邏輯來確保選項中只有一種瀏覽器類型,但我對此持懷疑態度。

+1

我真的不想說明爲什麼我想要這樣做,但讓我們只是說,如果某些「訪問者」遇到此問題,他們將不知道如何處理此字段。 – joebert 2009-08-21 12:48:38

回答

6

爲什麼要問用戶有關其用戶代理?

拉正確的http頭 - 正如你所說的,應該足夠了。

但是如果你需要一個慘,我會去

  • 正則表達式 - 基於先前的檢查HTTP用戶代理頭,並從該頭切割出不重要的信息
  • 目前可能的匹配步
  • 問用戶如果匹配是正確的,如果沒有,讓他輸入自己的答案
  • 然後我會盡力匹配他輸入的字典值,以便能夠進入IE和MSIE和得到相同的結果。

上面看起來很模糊:)和抽象的,也許你可以提供一個解釋 - 你爲什麼要這樣做?也許還有其他一些方法?

1

切記:客戶端發送HTTP標頭,用戶可能會在用戶代理中放入任何東西。因此,如果你想抓住那些對他們正在使用的瀏覽器「撒謊」的人,你只會捕獲那些在發送HTTP頭之前無法修改HTTP頭的人。

+0

沒有真正尋找說謊的騙子,只是「遊客」,這是無法學習如何在飛行中處理新的領域。 – joebert 2009-08-21 13:06:46

+0

@joebert:好的。我無法弄清楚你想做什麼,所以我只是猜測。無論如何,重點是:如果它來自客戶端,則不可信任。當然,你仍然可以使用它,但正如我所說,它不一定是事實。 – 2009-08-21 13:34:24

1

你無論是100%信任的用戶輸入,也沒有瀏覽器在HTTP頭中發送字符串...

+0

我知道,一切都在消毒。 :) – joebert 2009-08-21 13:03:56

1

最明顯的問題是,爲什麼你要問他們所使用的瀏覽器用戶?

但考慮到:

一)規範化用戶字符串:小寫,刪除空格,刪除號碼?

b)在標準化字符串和用戶代理字符串之間構建映射。

當您執行查找時,如果規格化的字符串或用戶代理字符串不在地圖中,請將其傳遞給人員以使用適當的映射添加到地圖中。

可能你會想以某種方式規範用戶代理?

+0

那麼,用戶代理字符串幾乎是棘手的。不同的瀏覽器製造商將其他瀏覽器製造商的品牌名稱和版本放在一起。您基本上需要通過試用或更好地瞭解哪些瀏覽器作者每個都需要查看全面的交叉引用文檔。 – JohnnySoftware 2010-01-02 02:32:53

相關問題