2008-09-18 22 views
7

Zrobiłem trochę testów na ten temat (Podczas przetwarzania strony po stronie serwera DWR Ajax żądanie obsługi dokładnie) i wydaje się, że możesz skutecznie manipulować plikami cookie, ale to jest sprzeczne z tym, co przeczytałem na Ajax najlepiej praktyki i interpretowanie przez przeglądarkę odpowiedzi z XmlHttpRequest. Uwaga Ja testowałem na:Czy można niezawodnie ustawić lub usunąć plik cookie podczas przetwarzania po stronie serwera wywołania Ajax (XHR)?

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

i we wszystkich przypadkach standardowe operacje cookie na obiekcie HttpServletResponse podczas Ajax obsługi żądania zostały prawidłowo interpretowane przez przeglądarkę, ale chciałbym wiedzieć, czy najlepszą praktyką jest popchnięcie manipulacji plikami cookie po stronie klienta, czy też można ufać temu (znacznie czystszemu) przetwarzaniu plików cookie po stronie serwera.

Chciałbym powitać odpowiedzi zarówno dotyczące ram DWR, jak i Ajax.

+0

Zastanowiłem się nad tym, ponieważ miałem problem z usunięciem pliku cookie w żądaniu DWR po stronie serwera. Mogę je tworzyć dobrze, ale nie mogę ich usunąć - od tego czasu odkryłem rozwiązanie bez plików cookie, zakładając, że nie można tego zrobić. –

Odpowiedz

8

XMLHttpRequest zawsze korzysta ze struktury połączenia przeglądarki internetowej. Jest to wymagane, aby programy AJAX działały poprawnie, ponieważ użytkownik zostałby wylogowany, gdyby obiekt XHR nie miał dostępu do puli plików cookie przeglądarki.

Teoretycznie możliwe jest, że przeglądarka internetowa po prostu udostępnia pliki cookie sesji bez korzystania ze struktury połączenia przeglądarki, ale nigdy (według mojej wiedzy) nie zdarzyło się to w praktyce. Nawet wtyczka Flash wykorzystuje połączenia z przeglądarką internetową.

W efekcie końcowym bezpieczne jest manipulowanie plikami cookie za pośrednictwem AJAX. Po prostu miej na uwadze, że połączenie AJAX może nigdy nie nastąpić. Nie są one gwarantowane, więc nie licz na nie.

+0

Dziękuję, pomimo niewielkiej ilości różnych opinii, ma to największy sens, biorąc pod uwagę moje własne wyniki testów, głosy i ogólne najlepsze praktyki wokół centralizacji logiki biznesowej po stronie serwera. – Peter

+0

Moja przyjemność. Zrobiłem także sporo badań w tej dziedzinie, tworząc API gry mutiplayer dla Flash i JavaScript. Dzięki 2 ograniczeniom połączeń nałożonym przez HTTP RFC szybko okazało się, że korzystam z połączeń przeglądarki. Pliki cookie potwierdziły te informacje. – 64BitBob

-1

Manipulowanie ciasteczkami po stronie klienta jest przeciwieństwem "najlepszej praktyki". I nie powinno to być również konieczne. HttpTo ciasteczka nie zostały wprowadzone za darmo.

+0

Nie manipuluje ciasteczkami u klienta; manipuluje nimi na serwerze w odpowiedzi na żądanie Ajax. W każdym przypadku manipulowanie plikami cookie po stronie klienta nie jest ogólnie uważane za szkodliwe, o ile pogarsza się z gracją, gdy JS jest wyłączony lub nieobsługiwany. –

1

W kontekście DWR może nie być "bezpieczny".

Od czytania the DWR site mówi:

Jest ważne, aby traktować żądania i odpowiedzi jako tylko do odczytu. Chociaż nagłówki HTTP mogą przejść przez OK, istnieje duża szansa, że ​​niektóre przeglądarki zignorują je.

Rozumiem, że ustawienie plików cookie lub atrybutów żądania jest nie-nie.
Mówiąc to, mam kod, który ustawia atrybuty żądań (kod napisałem przed przeczytaniem tej strony) i wygląda na to, że działa dobrze (poza usunięciem ciasteczek, o których wspomniałem w powyższym komentarzu).