【问题标题】:How can a java application identify a specific browser?java 应用程序如何识别特定的浏览器?
【发布时间】:2013-10-29 14:32:15
【问题描述】:

如何识别浏览器是 Firefox 还是 Chrome?基本上,我希望应用程序仅在用户注册的特定浏览器上运行。对于这种情况,我希望我的应用程序能够识别用户正在使用的浏览器,以了解应用程序是否被允许运行。

我正在使用 java servlet。

我尝试了浏览器的本地存储,但它可以在我的应用程序无法控制的情况下被删除。如果可以使用本地存储,请告诉我如何使用。

(是的,我可以获得浏览器信息,但我想通过浏览器识别特定机器,允许我的应用程序用户运行应用程序;否则,我需要限制该用户访问我的应用程序。)

【问题讨论】:

  • 什么样的“应用”?
  • 这个帖子可以帮助你 ::stackoverflow.com/questions/9847580/…
  • @shivan 它是一种浏览器管理类型的应用程序
  • Java 和 Javascript 不一样,你指的是哪一种?
  • 是的,客户端还是服务器端?

标签: java javascript jquery servlets browser


【解决方案1】:
httpRequest.getHeader("user-agent")

【讨论】:

    【解决方案2】:

    从 HTTP 请求标头中获取用户代理属性。

      String userAgent=req.getHeader("user-agent");
      String browserName = "";
      String  browserVer = "";
      if(userAgent.contains("Chrome")){ //checking if Chrome
            String substring=userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0];
            browserName=substring.split("/")[0];
            browserVer=substring.split("/")[1];
        }
        else if(userAgent.contains("Firefox")){  //Checking if Firefox
            String substring=userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0];
            browserName=substring.split("/")[0];
            browserVer=substring.split("/")[1];
        }
    

    【讨论】:

    • 这是可行的,但我想用我的应用程序配置这个浏览器,以便用户只能通过这个浏览器访问我的应用程序
    • 我没听懂你想说什么?
    • 请参阅我希望我的应用程序仅在特定机器的特定浏览器上运行。如果有人尝试从不同的浏览器访问,那么我想限制该用户
    • @SwapL 如果 servlet 检测到的浏览器不是您想要允许的,请放弃请求或向用户显示相应的错误消息..
    • 是但 req.getHeader("user-agent");足以检测我想知道的不同浏览器和使用不同的机器
    【解决方案3】:

    请在 servlet 中使用以下代码来了解哪个浏览器正在访问您的 servlet。

    String userAgent = request.getHeader("user-agent");
    

    【讨论】:

      【解决方案4】:
      public class MyServlet extends HttpServlet
      {  
         @Override
         public void doGet(final HttpServletRequest aRequest,   
                           final HttpServletResponse aResponse) throws ServletException, IOException
         {  
             final String agent = aRequest.getHeader("user-agent");
             // agent will looks like  
             // Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0
             // Mozilla/2.0 (compatible; MSIE 6.0; Windows NT 5.2)
             // Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
             // etc.
         }
      }
      

      【讨论】:

      • 来自用户代理我也可以限制应用程序登录吗?意味着假设我的应用程序只允许使用一台机器和一个浏览器登录....
      • @SwapL 是什么意思application login?是用户在form input中输入的登录名吗?
      • @SwapL 客户端:<input name="someName"/> 服务器:aRequest.getParameter("someName")
      【解决方案5】:

      代码如下:

      String userAgent = req.getHeader("user-agent");
      UserAgent ua = UserAgent.parseUserAgentString(userAgent);
      Version browserVersion = ua.getBrowserVersion();
      String browserName = ua.getBrowser().toString();
      int majVersion = Integer.parseInt(browserVersion.getMajorVersion());
      

      或者使用可以很容易地从这样的 javascript 代码中获取浏览器的详细信息 - 浏览器代码名 = navigator.appCodeName 浏览器名称 = navigator.appName 浏览器版本 = navigator.appVersion

      【讨论】:

      • 我有什么独特的属性吗?浏览器有什么独特的属性吗????
      • User-Agent 值如下:Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]0
      • 将此脚本复制到您的 JavaScript 文件中。它立即生效,您可以查询 BrowserDetect 对象的三个属性: 浏览器名称:BrowserDetect.browser 浏览器版本:BrowserDetect.version 操作系统名称:BrowserDetect.OS
      • @LalitHaryani 这都是浏览器独有的属性???如果我保存这些数据,那么我可以触发我的应用程序运行的位置和不运行的位置???
      猜你喜欢
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 2011-01-30
      • 2012-01-11
      • 2022-01-25
      • 2010-11-22
      相关资源
      最近更新 更多