Cake が提供するフォーム セキュリティ メカニズムを使用して、安全な ajax 呼び出しを行うことができます。これを行うには、非表示のフォームをレンダリングし、入力を配置して ajax 呼び出しパラメーターを格納します。次に、Javascript を使用してこれらのパラメーターをフォームに設定し、シリアル化して ajax 呼び出しを行います。CSRF チェックを有効にしている (そしてセッションごとに 1 つのトークンを無効にしている) 場合は、フォームを新しい有効な CSRF トークンで更新する必要があることに注意してください (コントローラーで を使用して読み取ることができます$this->request->params['_Token']['key']
)。
例:
<?php
echo $this->Form->create('AjaxForm');
echo $this->Form->hidden('value');
echo $this->Form->end();
?>
<script>
function makeAjaxCall() {
$.post(
ajaxUrl,
$('#AjaxForm').serialize(),
function(data) {
$('#AjaxForm [name="data[_Token][key]"]').val(data.newCsrfToken)
}
);
};
</script>
さらに参考までに、動的に変更されたクライアント側フォームで有効なセキュリティを維持できるコンポーネントを作成し、ajax 呼び出しを行うときにフィールドまたはアクションのロックを解除する必要がなくなりました。https://github.com/QTSdev/DynamicSecurityで見つけることができます。