gpt4 book ai didi

cakephp - 3.6 版本发布请求中的 CSRF token 不匹配

转载 作者:行者123 更新时间:2023-12-03 18:09:23 24 4
gpt4 key购买 nike

我有两个不同的 cakephp 应用程序。一个是 3.5 版,另一个是 3.6 版。

当我使用和构建 3.5 应用程序时,我没有遇到 CSRF matching in post request. 的问题但是现在当我使用 3.6 时,它给了我 CSRF token 错误。

虽然在两个应用程序的 AppController 中, CSRF 组件被禁用。
//$this->loadComponent('Csrf');
我正在使用这样的简单帖子请求:

$.ajax({
type: "POST",
url: "../user/my_action",
dataType: 'json',
success: function (data) {
set_data(data.response);
}
});

我错过了什么?还是我做错了一些配置?

最佳答案

最新的 3.6 应用模板现在默认使用 CSRF 中间件,查看你的应用 src/Application.php文件。不幸的是,这种变化没有被正确记录下来,让人们大吃一惊。

理想情况下,您不要禁用它,而是将正确的 CSRF token 与您的 AJAX 请求一起传递,您可以轻松地从 View 模板中的请求对象中获取 token ,例如在布局中使其全局可用:

<script>
var csrfToken = <?= json_encode($this->request->getParam('_csrfToken')) ?>;
// ...
</script>

然后,您可以在 AJAX 请求中轻松使用它:
$.ajax({
headers: {
'X-CSRF-Token': csrfToken
},
// ...
});

也可以看看
  • Cookbook > Middleware > Cross Site Request Forgery (CSRF) Middleware
  • Cookbook > Middleware > CSRF Protection and AJAX Requests
  • 关于cakephp - 3.6 版本发布请求中的 CSRF token 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51916680/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com