热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

3.6版本中的post请求中的CSRF令牌不匹配

如何解决《3.6版本中的post请求中的CSRF令牌不匹配》经验,为你挑选了1个好方法。

我有两个不同的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);
        }
    });

我错过了什么?或者我做错了一些配置?



1> ndm..:

最新的3.6应用程序模板现在默认使用CSRF中间件,请参阅您的应用程序src/Application.php文件.不幸的是,这种变化没有得到妥善记录,令人惊讶.

理想情况下,您不会禁用它,而是在您的AJAX请求旁边传递正确的CSRF令牌,您可以轻松地从视图模板中的请求对象获取令牌,例如在布局中使其全局可用:



然后,您可以在AJAX请求中轻松使用它:

$.ajax({
    headers: {
        'X-CSRF-Token': csrfToken
    },
    // ...
});

也可以看看

Cookbook>中间件>跨站点请求伪造(CSRF)中间件

Cookbook>中间件> CSRF保护和AJAX请求


推荐阅读
author-avatar
勤奋的瞌睡猪_715
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有