需要帮助,
我希望能够通过 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/