Security::js_fetch_token()
公式によると、AJAXでCSRFするならこれだってだいたい書いてあります。
<?= Security::js_fetch_token(); ?>
<script type="text/javascript">
function sendForm(submitButton){
var button = $(button);
var form = button.closest('form');
form.append($('<input type="hidden" name="fuel_csrf_token" value="' + fuel_csrf_token() + '">'));
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(),
timeout: 10000,
complete: function(xhr, textStatus){
// on complete
},
success: function(result, textStatus, xhr){
// on success
},
error: function(xhr, textStatus, error){
// on error
}
});
}
</script>
<form>
<input type="text" name="foo" value="" />
<input type="button" value="実行" onClick="sendForm(this)" />
</form>
このコード自体では動作確認をしていませんが、fuel_csrf_token()
というjavascriptの関数がPHPのSecurity::js_fetch_token();
によって発行されるので、それをinput hiddenに入れています。