php - 在启用 crsf 和安全组件的 cakephp 3.4 中通过 ajax 发送表单

标签 php cakephp cakephp-3.0 ajaxform

需要帮助,

我希望能够通过 ajax 将表单发送到 Controller 进行处理,同时在应用程序 Controller (cakephp 3.4)中启用 crsf 和安全组件。将不胜感激我能得到的任何帮助。谢谢

最佳答案

为了发送 ajax 请求,您需要首先通过文档中指定的头请求发送 csrf token ( link )

Cakephp 3.6+

这是一个带有 jquery 的示例ajax调用

$.ajax({
    url: '<?php echo $this->Url->build(['controller' => 'Foo', 'action' => 'bar'])?>',
    beforeSend: function(xhr){
        xhr.setRequestHeader('X-CSRF-Token', '<?php echo $this->request->getParam('_csrfToken') ?>'));
    }
});

Cakephp低于3.6

您需要创建或使用 JavaScript 的 Cookie 读取器(例如: js-cookie )

这是一个带有 jquery 的示例ajax 调用和 js-cookie :

$.ajax({
    url: '<?php echo $this->Url->build(['controller' => 'Foo', 'action' => 'bar'])?>',
    beforeSend: function(xhr){
        xhr.setRequestHeader('X-CSRF-Token', Cookies.get('csrfToken'));
    }
});

编辑:cakephp 3.6 发布后更新答案

关于php - 在启用 crsf 和安全组件的 cakephp 3.4 中通过 ajax 发送表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45123481/

相关文章:

javascript - 将不同的 PHP 变量传递给模态并在表单输入中显示

php - 根据下拉列表中选定的值填充 '&lt;input&gt;' 值

php - 那里有锦标赛 API 吗?

jquery - CakePHP 3.x 用于 ajax 请求的 Flash 消息

php - PHP中的数组转换

phpunit mock - 方法不存在

php - 在 Android 上使用 SSL 的 Json

php - 输出一个字段,根据 true 或 false 输出下一个字段

php - 调试变量值cakephp

php - 尝试获取季度和年度范围之间的数据