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

第一次页面加载时未设置CakePHP 4 csrfToken cookie,php,ajax,cakephp,csrf,csrf-token,Php,Ajax,Cakephp,Csrf,Csrf Token,我使用的是CakePHP4.2.3 在我的主页上,我有一个表单,我想用ajax提交这个表单,用cakePHP,我们必须在ajax请求的标题中指定“X-CSRF-Token”,要得到这个表单,我必须这样做: var csrfToken = <?= json_encode($this->request->getCookie('csrfToken')) ?>; var csrfToken=; 这项工作非常好,但在第一次页面加载时,我无法访问csrfToken cookie,

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

var csrfToken = <?= json_encode($this->request->getCookie('csrfToken')) ?>;
var csrfToken=;
这项工作非常好,但在第一次页面加载时,我无法访问csrfToken cookie,我必须再次刷新页面才能访问cookie

所以,如果访问者之前没有访问其他页面就刚刚到达我的网站,我的AJAX请求将无法发送

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

谢谢你的帮助

致以最良好的祝愿


Loic

如果有,您将从响应cookie(即应用程序正在设置的cookie)中读取值,而不是从请求cookie(即用户发送到应用程序的cookie)中读取值

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

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


谢谢您的帮助,它可以工作,但为什么在我的调试栏中,当我打开“请求”菜单时,在属性列表中看不到“csrfToken”?@LoickMEYER我认为调试工具包不会显示路由参数以外的任何属性。