2010-01-15 115 views
3

不工作我增加了值使用餅乾在Internet Explorer

Cookie testcookie = new Cookie ("test",test); 
testcookie .setMaxAge(5*60); 
response.addCookie(testcookie) ; 

到Cookie,但我沒有收到在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相同的作品,cooies在IE.How啓用的 代碼來解決這個問題?

+0

你確定你正在訪問相同的域名。即http://site.com,而不是http://www.site.com – Bozho 2010-01-15 08:32:02

+1

可能的副本http://stackoverflow.com/questions/361231/persistent-cookies-from-a-servlet-in-ie和http://stackoverflow.com/questions/1716555/setting-persistent-cookie-from-java-doesnt-work-in-ie – skaffman 2010-01-15 08:37:48

+0

雅重複的問題,但我沒有得到解決方案 – sarah 2010-01-15 08:56:53

回答

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()); 

希望它可以幫助

0

SimpleDateFormat的解決方案的工作,雖然我注意到小甜餅不當時我刪除預期。似乎它在當地時間打印了時間,而格式化程序將其顯示爲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());