Yii 2.0针对AJAX请求的CSRF验证
我有一个ajax
函数触发从我的数据库删除条目。
我需要对CSRF
进行相同的验证。 我怎样才能做到这一点?
我正在发送CSRF cookie
以及我的发布请求,但Yii 2.0
未验证它,并且通过ajax传递的任何输入都会到达服务器。
如何为ajax请求做CSRF
验证。
我们是否需要手动设置cookie并检查?
您不需要手动设置Cookie。
如果您使用jQuery CSRF令牌将自动发送。
例如,对于AngularJS,您可以手动添加它来请求像这样的参数:
yii.getCsrfParam(): yii.getCsrfToken()
确保您已包含YiiAsset
。
否则,您可以从元标记中检索它们(这基本上就是这两种方法的作用):
$('meta[name=csrf-param]').prop('content'): $('meta[name=csrf-token]').prop('content')
还要注意,为了启用CSRF验证, Controller
和Request
的属性enableCsrfValidation
属性都必须设置为true
。
更新:
另一个重要的事情要了解:
CSRF令牌将仅在此方法上得到验证: GET
, HEAD
, OPTIONS
。
还要确保在主布局中有<?= Html::csrfMetaTags ?>
。
最后我确定了包括
<?= Html::csrfMetaTags() ?>
链接地址: http://www.djcxy.com/p/26141.html