やりたいこと
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’));」の部分でそのトークンを発行している。
上記は間違っている可能性があるので、調べたら、随時追記・修正する。
参考サイト
以下に説明してくれているサイトをメモする。
コメント