Ler cookie que outro site gravou

4 respostas
S

ola Pessoal!!!

estou com o seguinte problema:
fiz uma aplicação web que é acessada pela seguinte URL
http://localhost:8080/suzano-web/siteA

e outra aplicação web que é acessada pela seguinte URL
http://localhost:8080/suzano-web/siteB

o que acontece é o seguinte… eu gostaria que o siteA gavasse um cookie no browser do cliente e quando eu entrasse no siteB (sem fechar o browser) o siteB conseguisse ler esse cookie… como fazer para um site ler os cookies gravados por outro site

estou achando que o caminho seria o metodo setDomain da classe cookie:

o codigo que estou usando para gravar o cookie é o seguinte:

Cookie cookie = new Cookie("nome", "valor");
	cookie.setDomain(".localhost:8080/");
	cookie.setMaxAge(-1); // quando o browser for fechado o cookie some
	
	response.addCookie(cookie);

e o codigo para ler é o seguinte

Cookie[] cookies = request.getCookies();

	for (int i = 0; i < cookies.length; i++) {
	    Cookie cookie = cookies[i];
	    
	    if ("nome".equals(cookie.getName())) {

		System.out.println(cookie.getValue());
	    }
	}

mas não esta funcionando…

alguem sabe o que pode ser!?!?!?!?

valeu

4 Respostas

T

Dica: setdomain não funciona direito com o nome “localhost”. Mesmo que seja para mexer no seu arquivo /etc/hosts (ou no Windows c:\windows\system32\drivers\etc\hosts), use um nome com mais de 2 componentes. Por exemplo:

127.0.0.1 abc.suzano.com.br xyz.suzano.com.br

e o site 1 seria

http://abc.suzano.com.br:8080/suzano-web/siteA

e o site 2,

http://xyz.suzano.com.br:8080/suzano-web/siteB

Nesse caso você poderia usar um cookie para suzano.com.br (o domínio) ou abc.suzano.com.br (só um site).

Y

Reabrindo o tópico.
Você conseguiu criar o cookie em uma aplicação e ler na outra?
Estou tentando da seguinte forma mas não está dando:
Aplicação 1: URL: http://local.dev:8080/app1

@Path("/") public void index() { Cookie cookie = new Cookie("nomeCookie","Valor do Cookie"); cookie.setDomain("local.dev:8080"); cookie.setMaxAge(3600); response.addCookie(cookie); }

Aplicação 2: URL: http://local.dev:8080/app2

@Path("/") public void index() { Cookie[] cookies = request.getCookies(); for(Cookie cookie : cookies) { System.out.println(cookie.getValue()); } }

B

thingol:
Dica: setdomain não funciona direito com o nome “localhost”. Mesmo que seja para mexer no seu arquivo /etc/hosts (ou no Windows c:\windows\system32\drivers\etc\hosts), use um nome com mais de 2 componentes. Por exemplo:

127.0.0.1 abc.suzano.com.br xyz.suzano.com.br

e o site 1 seria

http://abc.suzano.com.br:8080/suzano-web/siteA

e o site 2,

http://xyz.suzano.com.br:8080/suzano-web/siteB

Nesse caso você poderia usar um cookie para suzano.com.br (o domínio) ou abc.suzano.com.br (só um site).

O nome local.dev tem dois componentes apenas. Use um nome com mais de 2 componentes.

Y

Tentei com cookie.com.br e também não deu.
Mas essa parte de ter mais de 2 elementos eu acho estranho.
Mais de um eu entendo, mas se for mais de 2, ele não trabalharia bem com domínios .com.

Criado 22 de novembro de 2007
Ultima resposta 3 de abr. de 2012
Respostas 4
Participantes 4