第一次加载页面时未设置CakePHP 4 csrfToken cookie



我使用的是cakeHP 4.2.3在我的主页上,我有一个表单,我想用ajax提交这个表单,用cakeHP,我们必须在ajax请求的标题中指定"X-CSRF-Token",要得到这个表单,我必须这样做:

var csrfToken = <?= json_encode($this->request->getCookie('csrfToken')) ?>;

这工作得很好,但在第一次加载页面时,我无法访问csrfToken cookie,我必须再次刷新页面才能访问cookie。

所以我的AJAX请求不能发送,如果访问者刚刚到达我的网站而没有访问其他页面之前。

我知道在cakeHPP3.X中,csrfToken是直接在会话中存储的。你有解决我问题的办法吗?

感谢您的帮助

致问候,

Loic

如果有,您将从响应cookie中读取值,这是由您的应用程序设置的cookie,而不是从requestcookie中读取,这是用户发送到应用程序的cookie。

然而,在您的应用程序中,您最好保持不可知性,并按照文档中所示进行操作,从应用程序设置的csrfToken请求属性中读取令牌:

$this->request->getAttribute('csrfToken')

另请参见

  • 食谱>中间件>CSRF中间件>CSRF保护和AJAX请求

最新更新