2008-09-18 4 views
7

Я сам немного поработал над этим (во время обработки на стороне сервера обработчика запроса Ajax для DWR), и, похоже, вы МОЖЕТЕ успешно управлять куки-файлами, но это противоречит тому, что я прочитал в Ajax best и как браузер интерпретирует ответ от XmlHttpRequest. Примечание Я тестировал на:Можете ли вы надежно установить или удалить файл cookie во время обработки вызова Ajax (XHR) на стороне сервера?

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

и во всех случаях стандартные операции печенья на объекте HttpServletResponse во время обработки запроса Ajax были правильно интерпретируется браузером, но я хотел бы знать, если лучше всего нажимать манипуляции с файлами cookie на клиентскую сторону, или если это (гораздо более чистая) обработка файлов cookie на стороне сервера может быть доверена.

Я хотел бы приветствовать ответы, относящиеся к DWR Framework и Ajax в целом.

+0

Я задавался вопросом об этом, так как мне не удавалось удалить файл cookie в запросе DWR на стороне сервера. Я могу создать их прекрасно, но не могу их удалить - с тех пор выяснил решение без cookie, предположив, что это невозможно. –

ответ

8

XMLHttpRequest всегда использует структуру подключения веб-браузера. Это требование для корректной работы программ AJAX, поскольку пользователь будет выходить из системы, если объект XHR не имеет доступа к пулу cookie браузера.

Теоретически возможно, что веб-браузер может просто обмениваться кукисами сеанса без использования инфраструктуры соединения браузера, но это никогда не было (насколько мне известно) на практике. Даже плагин Flash использует подключения веб-браузера.

Таким образом, конечным результатом является то, что безопасно управлять кукисами через AJAX. Просто помните, что вызов AJAX никогда не произойдет. Они не являются гарантированными событиями, поэтому не рассчитывайте на них.

+0

Спасибо, несмотря на небольшое количество разных мнений, это имеет смысл, учитывая мои собственные результаты тестов, голоса и общие рекомендации по централизации бизнес-логики на стороне сервера. – Peter

+0

Мое удовольствие. Я также провел немало исследований в этой области, создав API-интерфейс mutliplayer для Flash и Javascript. Благодаря 2 ограничениям на соединение, налагаемым HTTP RFC, быстро стало очевидно, что я использую соединения браузера. Печеньки подтвердили эту информацию. – 64BitBob

-1

Манипулирование куки на стороне клиента скорее противоположно «лучшей практике». И это тоже не обязательно. HttpOnly cookie не вводили ничего.

+0

Он не манипулирует куки на клиенте; он манипулирует ими на сервере в ответ на запрос Ajax. В любом случае обработка файлов cookie на стороне клиента обычно не считается вредной, пока она грамотно ухудшается, когда JS отключен или не поддерживается. –

1

В контексте DWR он не может быть «безопасным».

the DWR site От чтения он говорит:

Важно, что вы лечите запрос HTTP и ответ, как только для чтения. Хотя заголовки HTTP могут пройти через OK, есть хорошая вероятность, что некоторые браузеры будут игнорировать их.

Я принял это за то, что установка атрибутов cookie или атрибутов запроса не имеет значения.
Сказав, что у меня есть код, который устанавливает атрибуты запроса (код, который я написал до того, как я прочитал эту страницу), и он работает нормально (кроме удаления файлов cookie, о которых я упоминал в моем комментарии выше).