我使用的是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请求