第一次页面加载时未设置CakePHP 4 csrfToken cookie
我使用的是CakePHP4.2.3 在我的主页上,我有一个表单,我想用ajax提交这个表单,用cakePHP,我们必须在ajax请求的标题中指定第一次页面加载时未设置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,
“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')
另见