você pode confiantemente definir ou excluir um cookie durante o processamento do lado do servidor de uma chamada Ajax (XHR)?

StackOverflow https://stackoverflow.com/questions/89579

Pergunta

Eu fiz um pouco de testes on isso mesmo (durante o processamento do lado do servidor de um manipulador de solicitações DWR Framework Ajax para ser exato) e parece que você pode manipular com sucesso cookies, mas isso vai contra muita coisa que eu li sobre Ajax melhores práticas e como os navegadores interpretar a resposta de um XMLHttpRequest. Nota Eu testei em:

  • IE 6 e 7
  • Firefox 2 e 3
  • Safari

e em todos os casos as operações de cookie padrão no objeto HttpServletResponse durante o manuseio pedido Ajax foram corretamente interpretados pelo navegador, mas eu gostaria de saber se é a melhor prática para empurrar a manipulação cookie para o lado do cliente, ou se esta (muito manipulação de limpeza) de cookie do lado do servidor pode ser confiável.

Eu gostaria de receber respostas tanto específico para o Framework DWR e Ajax em geral.

Foi útil?

Solução

XMLHttpRequest sempre usa estrutura de conexão do navegador Web. Este é um requisito para programas de AJAX para trabalhar corretamente como o usuário iria ficar desconectado se o objeto XHR não tinham acesso a piscina cookie do navegador.

É teoricamente possível para um navegador da Web para simplesmente cookies de sessão share sem usar estrutura de conexão do navegador, mas isso nunca (a meu conhecimento) aconteceu na prática. Mesmo o plugin Flash usa conexões do navegador Web.

Assim, o resultado final é que ele é seguro para manipular os cookies via AJAX. Apenas lembre-se que a chamada AJAX pode nunca acontecer. Eles não são garantidos eventos, por isso não contar com eles.

Outras dicas

No contexto da DWR pode não ser "seguro".

A partir da leitura o site DWR diz:

É importante que você tratar a solicitação HTTP e a resposta como somente leitura. Enquanto cabeçalhos HTTP pode obter através OK, há uma boa chance de que alguns navegadores irá ignorá-los.

Eu tenho tomado isto para dizer que os cookies de configuração ou atributos pedido é um não-não.
Dizendo isso, eu tenho código que faz atributos conjunto de solicitação (código que eu escrevi antes de eu ler essa página) e parece funcionar bem (para além de apagar os cookies que eu mencionei no meu comentário acima).

Manipulando biscoitos no lado do cliente é bastante o oposto de "melhores práticas". E isso não deve ser necessário, também. Cookies HttpOnly não foram introduzidas para nada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top