fat*_*ato 4 cakephp csrf cakephp-3.0
我有两个不同的cakephp应用程序.一个版本3.5和其他3.6.
当我使用和构建3.5应用程序我没有问题CSRF matching in post request.但现在因为我使用3.6它给了我CSRF令牌的错误.
虽然在两个应用程序中AppController,CSRF组件都是禁用的.
//$this->loadComponent('Csrf');
我正在使用这样简单的帖子请求:
$.ajax({
type: "POST",
url: "../user/my_action",
dataType: 'json',
success: function (data) {
set_data(data.response);
}
});
Run Code Online (Sandbox Code Playgroud)
我错过了什么?或者我做错了一些配置?
ndm*_*ndm 17
最新的3.6应用程序模板现在默认使用CSRF中间件,请参阅您的应用程序src/Application.php文件.不幸的是,这种变化没有得到妥善记录,令人惊讶.
理想情况下,您不会禁用它,而是在您的AJAX请求旁边传递正确的CSRF令牌,您可以轻松地从视图模板中的请求对象获取令牌,例如在布局中使其全局可用:
<script>
var csrfToken = <?= json_encode($this->request->getParam('_csrfToken')) ?>;
// ...
</script>
Run Code Online (Sandbox Code Playgroud)
然后,您可以在AJAX请求中轻松使用它:
$.ajax({
headers: {
'X-CSRF-Token': csrfToken
},
// ...
});
Run Code Online (Sandbox Code Playgroud)
也可以看看