SESSION情報を維持したままAjaxな処理を行う方法

スポンサーリンク

やりたいこと

Ajaxな処理をする際にも、SESSIONを維持出来るようにする。

どうするか

jQueryを用いている場合、以下のように記述すると良い。PHP側は特に特別な記述はなく、普通にSESSION変数を使用できる。

変更前

$.ajax({
    url: "hogehoge.php",
    type: "POST",
    data: {
        "foo" : "bar"
    },
    success: function(json_result) {
        // 中略
    },
    error: function() {
        // 中略
    },
    complete: function(() {
        // 中略
    }
});

変更後

$.ajax({
    url: "hogehoge.php",
    type: "POST",
    data: {
        "foo" : "bar"
    },
    beforeSend: function(xhr) {
        xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
    },
    success: function(json_result) {
        // 中略
    },
    error: function() {
        // 中略
    },
    complete: function(() {
        // 中略
    }
});

追加した部分が何を意味するか

セキュリティに関することなので、この部分は理解しておきたいのだけど、まだまだ及ばない。

  • CSRFという攻撃がある。
  • CSRF攻撃に対する策として、GET以外のメソッドでデータを送信する際にはトークンが必要である。
  • 「xhr.setRequestHeader(‘X-CSRF-Token’, $(‘meta[name=”csrf-token”]’).attr(‘content’));」の部分でそのトークンを発行している。

上記は間違っている可能性があるので、調べたら、随時追記・修正する。

参考サイト

以下に説明してくれているサイトをメモする。

コメント

タイトルとURLをコピーしました