如何解决如何在Cakephp 3中的ajax调用中定义CSRF令牌以及如何为某些ajax请求关闭CSRF
CSRF组件将当前令牌写入,作为请求参数_csrftoken
,您可以通过request objectsparam()
方法(或getparam()
从CakePHP 3.4开始)获取它:
setRequestHeader('X-CSRF-Token', <?= json_encode($this->request->param('_csrftoken')); ?>);
可以通过从控制器事件管理器中删除CSRF组件来禁用它。您必须确定需要执行什么条件,例如针对特定操作,例如:
public function beforeFilter(\Cake\Event\Event $event)
{
parent::beforeFilter($event);
if ($this->request->param('action') === 'actionXyz') {
$this->eventManager()->off($this->Csrf);
}
}
如果您使用的是CSRF中间件,则令牌仍可作为名为的请求参数使用_csrftoken
,禁用中间件,但工作方式有所不同,请参见例如
也可以看看
解决方法
在Cakephp3中,启用Csrf组件时。我如何在ajax调用中使用它。在beforeSend
ajax的此参数中,csrf令牌设置在标头中。什么是价值csrfToken
。由于它给出了错误
未定义csrfToken
beforeSend: function(xhr){
xhr.setRequestHeader('X-CSRF-Token',csrfToken);
},
另外,如何为某些ajax调用禁用Csrf组件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。