- ベストアンサー
ajaxの使いどころ
- ajaxを使った会員制Webサービスの開発についての質問です。
- セッションのチェックやタイムアウト時の処理について教えてください。
- ajaxの使いドコロやセキュリティについての判断方法も知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
現在行っている実装をベースに回答させていただきます。 (1)もちろんyesです。 Ajaxリクエストであっても、基本的にセッションやクッキーの扱いは同じであり、通常通りの処理を行います。 (2)セッションの有効性チェックで強制リダイレクト、というのは通常の処理だと思います。 FuelPHPやASO.NET MVCでは、アクションの実行直前に必ず呼び出されるメソッド(フィルタ)がありますので、そちらで全部一括して処理します。 (3)Ajaxの利用は、方向性としては間違っていないです。 ただし、一口にAjaxといってもいくつか種類があり、 3-1・スキームをサーバサイドで自動生成するもの(基本JSを書かない) 3-2・ほとんど全部をjQuery等で処理する「ピュアAjax」 3-3・さらにAngularやKnockoutなど、javascriptフレームワークを使うもの。 この中の3-2の場合、javascriptによるインベントハンドラ定義・サーバ送信データのHTMLへの反映、入力値のajax形式送信、という問題をすべてjavascriptで行うと、UI(ユーザインターフェース)にガチガチに拘束されたコードになって、開発効率(生産性)が悪化、バグ耐性も低下して、改変が非常に難しくなっています。 現在、サーバサイド開発は、IDEやMVCフレームワークの台頭で、かなり開発生産性や保守効率が上がっているのですが、Ajaxは開発環境も含めて困難度が高く、対応できるエンジニアも少ないことから、knockoutJSやAngularのようなフレームワークが正しく導入運用できるまで、「力攻めの」javascriptAjax DOM操作は封印です。
その他の回答 (2)
- Ogre7077
- ベストアンサー率65% (170/258)
個人的な考えです 1) AJAXのサーバー側チェック 基本的に「クライアントは絶対に信じるな」が合言葉ですので、 遷移だろうが非同期だろうが関係なく、 HTTPで受け付ける要求は全て厳格なチェックを行ってください。 2) AJAXのエラー処理 エラー用のJSONを返すもよろしいですが、 HTTP応答で 403 Forbidden を返し、AJAX のエラーイベントで処理するのも手です。 3) AJAXの使いどころ セキュリティの点では何の問題もないと思います。 なので、業務目的と使い勝手で選択すべきかと思います。 ・古い環境を考慮するなら、画面遷移のみ ・画面のごく一部だけ書き換えたいならAJAX ・画面入力状態を保持したままPOST送信したいならAJAX ・ただし業務的に重要な操作なら、入力・確認・完了と画面遷移 ・表示系機能でブラウザの戻る(巻き戻す)機能を重視するなら画面遷移 ・サーバー側処理が非常に重い業務ならAJAX ・再利用できる画面部品の処理ならAJAX
お礼
非常に有用なご回答をいただき、本当に有難うございます。 (1) やはりそうですよね…。 自分でも「常識的に考えてチェックは必須だよなぁ」とは思っていたのですが、改めてご回答をいただき、自信をもつことが出来ました。 (2) なるほど、レスポンスコードでエラーを表現するという手法は凄くよさそうですね。是非とも活用してみたいと思います。 (3) これは非常に参考になります。 こういった「判断基準」に関する情報が全然なかったので、是非とも参考にさせて頂きます。
- Taiyonoshizuku
- ベストアンサー率37% (183/489)
1.そりゃもちろん。 直接そのAjax通信側のURLにアクセスされたらどうするの? 2.うん、それでいいと思うよ。 3.別に作り方、考え方次第。 非同期通信だろうが同期通信だろうが、セキュリティの考慮は何も変わらないと思うけど?
お礼
何分まだ開発経験が未熟なので、何が正解か分からず右往左往していまたが、ご回答を頂いていろいろと確信が持てました。 ありがとうございます。
お礼
サーバーサイドではFuelPHPを使って開発をしていたので、(1)、(2)はピンポイントな回答で非常に助かりました。 (3)に関しましては、こういったjavascriptフレームワークが存在していること自体知らず、ご提案いただいた中の3-2の方法で実装を進めていました。 javascript内に、イベントハンドラの定義とイベントをバインドする要素を直接記述しなければならず、確かにおっしゃる通りJavascriptへの依存度の高く「あまり美しくないな」と思っていました。 とりあえずknockout.jsについて調べてみたのですが、一切javascript上でDOM操作をせずにHTMLの更新ができたり、HTMLと処理部分を上手く分離できるなど、一気に開発・保守の効率が高まりそうですね。 AngularJSについても調べてみようと思います。 期待していたよりもレベルの高いご回答をいただき、非常に勉強になりました。 本当にありがとうございます。