【问题标题】:cookie not working in Internet explorercookie 在 Internet Explorer 中不起作用
【发布时间】:2015-06-23 17:30:35
【问题描述】:

我正在使用

向 cookie 添加一个值
Cookie testcookie = new Cookie ("test",test);
testcookie .setMaxAge(5*60);
response.addCookie(testcookie) ;

但我没有在 Internet Explorer 中获得 cookie 值。 获取cookie值的代码

Cookie cookies [] = getRequest().getCookies ();
    Cookie myCookie = null;
    if (cookies != null)
    {

        for (int i = 0; i < cookies.length; i++) 
        {
            if (cookies [i].getName().equals ("test"))
            {
                myCookie = cookies[i];
                String testval=myCookie.getValue();
            }
        }
    }

但是在firefox中也一样,在IE中启用了cooies。如何解决这个问题?

【问题讨论】:

标签: java internet-explorer cookies


【解决方案1】:

这几天我遇到了同样的问题,我刚刚找到了解决方案。尝试手动设置 cookie,因为javax.servlet.http.Cookie 不允许您设置Expires 属性:

StringBuilder cookie = new StringBuilder("test=" + test + "; ");

DateFormat df = new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss 'GMT'", Locale.US);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 5*60);
cookie.append("Expires=" + df.format(cal.getTime()) + "; ");
cookie.append("Max-Age=" + (5*60));
response.setHeader("Set-Cookie", cookie.toString());

希望对你有帮助

【讨论】:

    【解决方案2】:

    SimpleDateFormat 解决方案有效,但我注意到 cookie 没有在我预期的时间被删除。似乎它以我的当地时间打印了时间,而格式化程序将其显示为 GMT。如果您将日历对象设置为时区 GMT 并使用 String.format,它将被格式化为正确的时区。

    // Your values here
    String name = "test";
    String value = "test";
    String path = "/";
    int maxAge = 60;
    
    
    StringBuilder sb = new StringBuilder();
    sb.append(name);
    sb.append("=");
    sb.append(value);
    
    sb.append("; path=");
    sb.append(path);
    
    Calendar cal = Calendar.getInstance();
    cal.setTimeZone(TimeZone.getTimeZone("GMT"));
    cal.add(Calendar.SECOND, maxAge);
    sb.append("; Expires=");
    sb.append(String.format(Locale.US, "%1$ta, %1$td-%1$tb-%1$tY %1$tH:%1$tM:%1$tS GMT", cal));
    sb.append("; Max-Age=");
    sb.append(maxAge);
    
    response.setHeader("Set-Cookie", sb.toString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-26
      • 2012-06-07
      • 2015-03-16
      • 2012-05-06
      • 2011-06-02
      • 2015-12-17
      • 2013-04-30
      • 2013-09-25
      相关资源
      最近更新 更多