作者:mobiledu2502882663 | 来源:互联网 | 2023-02-01 17:28
在Cakephp3中启用Csrf组件时.我如何在ajax调用中使用它.在此beforeSend
参数中,ajax csrf标记在标头中设置.什么是价值csrfToken
.因为它给出了错误
csrfToken未定义
beforeSend: function(xhr){
xhr.setRequestHeader('X-CSRF-Token', csrfToken);
},
另外,如何禁用某些ajax调用的Csrf组件.
1> ndm..:
CSRF组件将当前令牌写入,作为请求参数_csrfToken
,您可以通过request objects param()
方法(或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
,禁用中间件,但工作方式有所不同,请参见例如Cakecake 3.5.6为控制器禁用CSRF中间件
也可以看看
食谱>请求和响应对象>请求参数
食谱>控制器>组件> CSRF>使用CsrfComponent
食谱>控制器>组件> CSRF>为特定操作禁用CSRF组件