我有一个ajax
函数触发从我的数据库删除条目.
我需要做CSRF
同样的验证.我怎样才能做到这一点?
我发送了CSRF cookie
我的帖子请求,但Yii 2.0
没有验证它,任何通过ajax传递的输入都到达服务器.
如何CSRF
对ajax请求进行验证.
我们是否需要手动设置cookie并检查?
您不需要手动设置cookie。
如果您使用的是jQuery,则CSRF令牌会自动发送。
例如,对于AngularJS,您可以手动添加它以请求如下参数:
yii.getCsrfParam(): yii.getCsrfToken()
Run Code Online (Sandbox Code Playgroud)
确保您已YiiAsset
包括在内。
否则,您可以从meta标记中检索它们(基本上这是这两种方法的作用):
$('meta[name=csrf-param]').prop('content'): $('meta[name=csrf-token]').prop('content')
Run Code Online (Sandbox Code Playgroud)
另请注意,要启用CSRF验证Controller
,必须将和Request
属性enableCsrfValidation
属性都设置为true
。
更新:
要了解的另一件事:
CSRF令牌将只有在这个方法进行验证:GET
,HEAD
,OPTIONS
。
还要确保您具有<?= Html::csrfMetaTags ?>
主布局。