2010-02-10 57 views
-1

在Java(SE,而不是J2EE)中可以檢測Cookie是否在默認瀏覽器中啓用?檢測是否通過Java啓用了Cookie

這不是客戶端/服務器應用程序。這只是一個恰好與默認瀏覽器交互的桌面應用程序。

+2

重複http://stackoverflow.com/questions/531393/how-to-detect-if-cookies-are-disabled-is-it-possible – Bozho 2010-02-10 21:27:53

+0

關於第二個想法 - 可能不是重複的,如果它認爲HttpURLConnection 。那麼 - 您對JavaSE意味着什麼?是否使用applet檢查cocokies? HttpURLConenction? – Bozho 2010-02-10 21:34:23

+1

請詳細說明這個問題的背景。此Java代碼是否在客戶機或服務器機器上運行?這聽起來像是你想在同一個客戶端機器上運行它,並測試客戶端的默認瀏覽器是否啓用了cookie,這是真的嗎? – BalusC 2010-02-10 21:35:07

回答

2

我不確定你的意思是「默認瀏覽器」,但這裏要理解的基本原理是,用Java,C++,Python編寫的代碼,你命名它,處理HTTP請求應該設置一個使用Set-Cookie設置cookie,並查看在瀏覽器的後續請求中Cookie頭中可用的設置。如果客戶端中的Cookie被關閉,則後續請求中不會有Cookie標頭。簡單的重定向到初始請求也可以用於生成「後續」請求。

+1

您的默認瀏覽器是操作系統打開互聯網鏈接時首先顯示的瀏覽器。 – 2010-02-10 21:42:53

0

那裏有許多瀏覽器,每個瀏覽器都使用不同的機制來存儲用戶的偏好......包括確定用戶是否已禁用Cookie的偏好。

您可以設想實現一個Java應用程序,該應用程序知道如何取消某些流行瀏覽器的設置信息。

但是這會包含很多瀏覽器特定的操作系統特定的代碼。而在Windows的情況下,它會在註冊表中造成混亂;例如使用一些第三方庫。當然,這都將是相當脆弱的,因爲:

  1. 下一個版本/用戶的瀏覽器的版本可以使用不同的設置表示,

  2. 用戶可以使用您的一些新的瀏覽器從來沒有聽說過的,

  3. 不同的Linux發行版,等可以被配置爲使用不同的默認位置的設置文件,和/或偏好文件,上面寫着用戶的默認瀏覽器是什麼,以及

  4. 無論如何,用戶可以覆蓋默認位置,這是通用桌面應用程序無法理解的。

編輯 - 在另一方面,如果你的桌面應用程序(在HTTP協議的服務器角色扮演)只需要弄清楚,如果它是目前談論瀏覽器將允許它設置cookie,簡單的解決方案是嘗試去做,看看它是否有效。

最後,您需要記住,用戶可能不會使用默認的瀏覽器,無論他正在嘗試執行什麼操作。我經常在機器上安裝多個瀏覽器,並且可能會使用非默認的瀏覽器來執行某些操作。

0

假設你的應用程序作爲本地主機服務器到瀏覽器,這是你的問題,似乎要說什麼......

一種方法是請求一個特殊的URL具有特殊的cookie重定向,說「 CookieCheck「設置爲一些已知的特殊值,並將原始URL編碼爲查詢數據。收到特殊網址的請求時,如果收到「CookieCheck」,瀏覽器接受該cookie - 然後您可以重定向回原始URL,但Cookie設置爲真實值。

這可能很難做POST請求,除非您可以存儲發佈數據服務器端或將其編碼到查詢數據中。它也將請求從POST轉換爲GET,這可能會造成問題。