Problemas com cookies

Boas,

Provavelmente muitos programadores de java mais voltados para a web já tiveram este meu problema, é que faço um programa e tudo funciona bem no meu pc, mas quando uso outro pcs dá erros por todo o lado…
Criei um simples sistema de login e logout com cookies… no meu pc funciona perfeitamente mas não nos outros … não entendo porque será isso… o código é muito grande para colocar aqui… alguem tem alguma ideia do que poderá ser?

PEACE

Ok, acabei de testar um exemplo que vem no livro “Core Servelts and JSP”, o codigo é o seguinte:

[code]package coreservlets;
import java.io.;
import javax.servlet.
;
import javax.servlet.http.*;

public class SetCookies extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
for(int i=0; i<3; i++) {
Cookie cookie = new Cookie("Session-Cookie " + i, "Cookie-Value-S" + i);
response.addCookie(cookie);
cookie = new Cookie("Persistent-Cookie " + i, "Cookie-Value-P" + i);
cookie.setMaxAge(3600);
response.addCookie(cookie);
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Setting Cookies";
out.println ("<html>"+ "<BODY BGCOLOR="#FDF5E6">" + "<H1 ALIGN="CENTER">" + title + "</H1>" + "There are six cookies associated with this page." + "To see them, visit the" + "<A HREF="/spacecraft/ShowCookies">" + "<CODE>ShowCookies</CODE> servlet</A>." + "<P>" + "Three of the cookies are associated only with the" + "current session, while three are persistent." + "Quit the browser, restart, and return to the" + "<CODE>ShowCookies</CODE> servlet to verify that" + "the three long-lived ones persist across sessions." + "</BODY></HTML>");
}
}[/code]

[code]package coreservlets;
import java.io.;
import javax.servlet.
;
import javax.servlet.http.*;

public class ShowCookies extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Active Cookies";
out.println("<html>" + "<BODY BGCOLOR="#FDF5E6">
" +
"<H1 ALIGN="CENTER">" + title + "</H1>
" + "<TABLE BORDER=1 ALIGN="CENTER">
" +
"<TR BGCOLOR="#FFAD00">
" + " <TH>Cookie Name
" + " <TH>Cookie Value");
Cookie[] cookies = request.getCookies();
Cookie cookie;
for(int i=0; i<cookies.length; i++) {
cookie = cookies[i];
out.println("<TR>
" + "<TD>" + cookie.getName() + "
" + " <TD>" + cookie.getValue());
}
out.println("</TABLE></BODY></HTML>");
}
}[/code]

Testei isto no meu pc com o tomcat e n deu problemas, criou tanto os cookies de sessão como os persistentes. Agora se pedirem a alguem que esta noutro computador para testar este codigo ele so vai criar os cookies de sessao…

Qual é o problema? será do tomcat que nao deixa criar cookies persistentes ? Não percebo… alguém sabe?.. estou completamente perdido…

Já estive à procura no site da Sun, até fiz lá um post, registei-me na mailing list do tomcat, e voltei a fazer a mesma pergunta e nada… continua sem resposta para a minha pergunta… não entendo… estou sem ideias, nunca ninguém aqui trabalhou com cookies?

Carnaval, nem todo mundo esta no PC :slight_smile:

Bom, quais as versoes dos navegadores das outras maquinas?? nao existe algum tipo de restricao nelas?? Nao sei se ajuda, mas tente trocar seu codigo para

for&#40;int i=0; i&lt;3; i++&#41; &#123;
    response.addCookie&#40;new Cookie&#40;&quot;Session-Cookie &quot; + i, &quot;Cookie-Value-S&quot; + i&#41;;&#41;;
    Cookie cookie = new Cookie&#40;&quot;Persistent-Cookie &quot; + i, &quot;Cookie-Value-P&quot; + i&#41;;
    cookie.setMaxAge&#40;3600&#41;;
    response.addCookie&#40;cookie&#41;;
&#125; 

Rafael

Já testei com varias pessoas… linux, windows, IE, netscape, konqueror… não dá em nenhum, comigo funciona… eu corro a servlet, vou lá e funciona… mas se forem outras pessoas a acederem do seu computador ao meu servlet (que está no meu computador) já não funciona… não percebo… será algum problema do tomcat? algum restrição q ele tenha? estou a ficar sem ideias…

Se alguem puder testar o codigo ali em cima, verá que funciona sem problemas, mas se pedir a alguem noutro computador para aceder ao seu e testar o codigo, verá que os cookies persistentes não sao criados… pelos menos com o tomcat n está a funcionar…

HELLLLPPPPPPPPPPP!!! :frowning:

Voce testou com a alteracao que eu coloquei??

Rafael

Sim, testei… continua a mesma coisa… funciona comigo mas não com as pessoas que estao aceder externamente ao meu servlet… não acho q seja um erro do codigo mas sim talvez do tomcat… ja tentei reinstalar o tomcat mas tb n funciona… se vc podesse testar o codigo na sua maquina era mto bom… teria é q pedir a outra pessoa para aceder ah sua maquina para testar.

Ok, parece q o problema afinal é outro… pedi a um amigo meu para colocar o servlet no tomcat dele, e eu acedi através do meu computador. Resultado: Criou o cookie e funcionou tudo sem problemas, logo penso que a razão porque funciona apenas no meu computador terá a ver com alguma coisa que eu tenho instalado e eles não, tenho que colocar alguma coisa no CLASSPATH ou algo do genero?

Peço desculpa pelo meu numero grande de post mas é para manter, quem estiver interessado, a par do que vou descobrindo…

PEACE!

Ok, para concluir este topico, e depois de 2 dias de testas e muita pancada na parede descubri que o problema é do windows 2000 + IE…

Testes:
WinXP - Funciona
Win ME - Funciona
Win 98 - Funciona
Win 2k + IE - Não funciona
Win 2k + mozilla - Funciona

Basicamente o win2k + IE não deixa criar cookies com o java… não sei se é um bug conhecido mas foi o q consegui apurar disto tudo, nota-se que os win2k q experimentei tinham os updates feitos, não sei como será nos que não têm updates.

PEACE!

[quote=“Morcego”]Win 2k + IE - Não funciona
Win 2k + mozilla - Funciona

Basicamente o win2k + IE não deixa criar cookies com o java… não sei se é um bug conhecido mas foi o q consegui apurar disto tudo, nota-se que os win2k q experimentei tinham os updates feitos, não sei como será nos que não têm updates.[/quote]

Eu tive esse problema nesta semana, e quando acessei a minha página pelo mozilla funcionou normalmente mas quando eu acessava pelo IExplorer não criava eram criados os cookies ordinários, apesar de criar os cookies de sessão (estou usando o Win2k).

De início estava acessando o tomcat com o endereço da minha máquina da rede Windows (http://10557_sfp3/…). Quando troquei o endereço pelo ip real o IExplorer passou a aceitar os cookies normalmente.

Não entendi o porquê, mas funcionou!

:roll:

Desculpe pela pergunta óbvia, mas você checou se nestes IEs está configurado para aceitar cookies?

Sim. Na verdade, com a mesma configuração, o IE aceita os cookies caso eu acesse via IP real (http://172.20.7.7/appname/), mas nega-se a criar os cookies quando acesso via nome Windows. (http://10557_sfp3/appname/).