为什么我的Java servlet自动登录代码适用于Firefox而不适用于IE?

时间:2014-08-20 16:42:32

标签: java internet-explorer servlets autologin

我接管了一个Sring MVC项目,需要改变它的行为,所以在我的servlet中我发送一个get请求来自动登录,我的servlet代码如下所示:

...
  public class ServletFilter implements Filter
  {
    int Count=0;
    ...

    public void doFilter(ServletRequest servletRequest,ServletResponse servletResponse,FilterChain filterChain) throws IOException,ServletException
    {

      if (Count==0)
      {
        String Login_URI="http://Example.com/SupportCenter/login.html?userName="+userName+"&password="+password;
        Count++;
        String result=sendGetRequest(Login_URI);
      }
    ...

      private String sendGetRequest(String url)
      { 
        StringBuffer response=new StringBuffer();
        String USER_AGENT="Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)";
        // String USER_AGENT="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0";

        try
        {
          URL obj=new URL(url);
          HttpURLConnection con=(HttpURLConnection)obj.openConnection();
          con.setRequestMethod("GET");
          con.setRequestProperty("User-Agent", USER_AGENT);

          int responseCode = con.getResponseCode();
          System.out.println("\nSending 'GET' request to URL : "+url);
    //    System.out.println("Response Code : "+responseCode);

          BufferedReader in=new BufferedReader(new InputStreamReader(con.getInputStream()));
          String inputLine;

          while ((inputLine=in.readLine()) != null) { response.append(inputLine); }
          in.close();
    //    System.out.println(response.toString());
        }
        catch (Exception e) { e.printStackTrace(); }
        return response.toString();
      }
    ...
    }

当我使用Firefox运行它时,它登录了我,但没有在IE中工作。

我也手动粘贴了网址:

http://Example.com/SupportCenter/login.html?userName=UID&password=PSW

进入两个broswers,他们都登录了我。 那么为什么当我的servlet在IE中运行时,它无法登录我?我怎样才能看到浏览器和servlet之间的幕后交互,所以我模拟了它?

1 个答案:

答案 0 :(得分:0)

我弄明白为什么,只需打开Cookie即可解决问题。