2008-09-18 9 views
7

私はこれを自分でテストしました(DWRフレームワークのAjaxリクエストハンドラのサーバー側処理中)、クッキーをうまく操作することができたようですが、これはAjaxをよく読んだXmlHttpRequestからの応答をブラウザがどのように解釈するかについて説明します。Ajax(XHR)コールのサーバー側処理中にクッキーを確実に設定または削除できますか?

  • IE 6と7
  • のFirefox 2と3
  • サファリ

と、すべての場合にAjaxリクエストの処理中にHttpServletResponseオブジェクト上の標準的なクッキーの操作が正しくなかった:私が上でテストされています注意してくださいブラウザで解釈されますが、クライアント側にクッキー操作をプッシュするのがベストプラクティスであるか、この(よりクリーンな)サーバー側のクッキー処理が信頼できるかどうかを知りたいと思います。

私は、DWRフレームワークとAjaxの両方に固有の回答をお待ちしております。

+0

私は、サーバーサイドのDWR要求でCookieを削除するのに問題があったので、これについて疑問に思いました。 私はそれらをうまく作成することはできますが、それらを削除することはできません。それ以来、クッキーフリーのソリューションは、それができなかったと仮定して計算されています。 –

答えて

8

XMLHttpRequestは、常にWebブラウザの接続フレームワークを使用します。 XHRオブジェクトがブラウザのクッキープールにアクセスできない場合、ユーザーがログアウトするため、AJAXプログラムが正しく動作するための要件です。

理論的には、Webブラウザはブラウザの接続フレームワークを使わずに単純にセッションCookieを共有することができますが、実際にはこれは実際には起こっていません。 FlashプラグインでもWebブラウザの接続が使用されます。

このように、最終的にAJAXを介してCookieを操作することは安全です。 では、AJAX呼び出しは決して起こらないかもしれないことに注意してください。彼らは保証された出来事ではありませんので、それらにはカウントしないでください。

+0

少数の異なる意見にもかかわらず、これはサーバー側のビジネスロジックの集中に関する自分のテスト結果、投票、および一般的なベストプラクティスを考えれば最も理にかなっています。 – Peter

+0

私の喜び。 FlashとJavascript用のマルチプレイヤーゲームAPIを作成しながら、この分野でかなりの研究をしました。 HTTP RFCによって課された2つの接続制限のおかげで、私はブラウザの接続を使用していたことがすぐ明らかになりました。クッキーはこの情報を確認しました。 – 64BitBob

-1

クライアント側でクッキーを操作することは、「ベストプラクティス」とは逆の方法です。そして、それは必要ではありません。 HttpOnlyクッキーは何のためにも導入されませんでした。

+0

彼はクライアント上でクッキーを操作していません。彼はAjaxリクエストに応じてサーバー上でそれらを操作しています。いずれにせよ、クライアント側のクッキー操作は、JSが無効であるかサポートされていない場合に正常に機能しなくなる限り、一般的に有害であるとはみなされません。 –

1

DWRのコンテキストでは、「安全」ではない可能性があります。

the DWR siteを読んでから、それは言う:

読み取り専用としてあなたがHTTPリクエストとレスポンスを扱うことが重要です。 HTTPヘッダーはOKを通過する可能性がありますが、一部のブラウザーが無視する可能性があります。

これは、クッキーまたはリクエスト属性の設定が「いいえ」であることを意味しています。
これは、リクエスト属性(コードを書く前にコードを書いたコード)を設定していて、うまく動作していることを示しています(上記のコメントで言及したクッキーを削除します)。

関連する問題