2010-01-15 5 views
3

J'ajoute une valeur à cookie parcookies ne fonctionne pas dans Internet Explorer

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

Mais je ne reçois pas la valeur du cookie dans Internet Explorer. Code d'obtenir la valeur du 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(); 
      } 
     } 
    } 

Mais les mêmes œuvres dans FireFox, cooies sont activés dans IE.How pour résoudre ce problème?

+0

Êtes-vous sûr d'accéder aux mêmes domaines. ie http://site.com, et non http://www.site.com – Bozho

+1

Copie probable de http://stackoverflow.com/questions/361231/persistent-cookies-from-a-servlet-in-ie et http://stackoverflow.com/questions/1716555/setting-persistent-cookie-from-java-doesnt-work-in-ie – skaffman

+0

Ya sa question répétée mais je ne reçois pas la solution là – sarah

Répondre

1

J'ai fait face au même problème ces jours-ci, et je viens de trouver une solution. Essayez de régler le cookie manuellement, comme javax.servlet.http.Cookie ne vous permet pas de définir Expires attribut:

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

Hope it helps

0

La solution fonctionne SimpleDateFormat, même si je remarqué que les biscuits ne sont pas supprimés au moment où je attendu. Il semble qu'il a imprimé l'heure dans mon temps local, tandis que le formateur le présente comme GMT. Si vous définissez l'objet de calendrier sur timezone GMT et utilisez String.format, il sera formaté dans le bon fuseau horaire.

// 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()); 
Questions connexes