[英]HttpServletRequest#getHeader(“User-Agent”) returns null browser name
我使用的是 Java 6。我對 JSP 和 Servlet 的了解很少。
我正在使用以下代碼獲取運行我的應用程序的瀏覽器名稱:
String browserName = requestProvider.get().getHeader("User-Agent");
此外,我使用以下代碼獲取運行我的應用程序的機器的 IP 地址:
String ipAdd = requestProvider.get().getRemoteAddr();
在這兩種情況下requestProvider
都是Provider<HttpServletRequest>
類型的引用變量。 而且我確信它永遠不會NULL
。
現在問題是有時我得到兩個值( browserName and ipAdd
)NULL。 我有時會寫,因為我沒有測試用例。
所以我的問題是,當這些值可以為 NULL 時,Java 中的情況是什么?
為了避免這個問題,我在編碼時應該注意什么?
是否有任何其他方法可以每次獲取 IP 地址和瀏覽器名稱?
String browserName = requestProvider.get().getHeader("User-Agent");
null
表示發送請求的人不包含“User-Agent”標頭。
String ipAdd = requestProvider.get().getRemoteAddr();
在正常情況下不太可能返回 null,但有報告說它可能會在邊緣情況下返回,比如在響應已經發送之后。 無論如何,“獲取運行我的應用程序的機器的 IP 地址”聽起來不像getRemoteAddr()
的用途。 它用於獲取最近發送請求的客戶端或代理的地址。
是否有任何其他方法可以每次獲取 IP 地址和瀏覽器名稱?
不。您完全依賴於 HTTP 客戶端和/或任何干預代理的行為來獲取此類信息。
嘗試使用小寫的用戶代理,因為如果我們直接從頭訪問它就可以工作。
String browserName = requestProvider.get().getHeader("user-agent");
獲取IP地址的替代方法是
String ip = requestProvider.get().getHeader("True-Client-IP"); 如果我們有 akamai 整數化,這會起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.