微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决CakePHP 4 csrfToken cookie 未在第一页加载时设置

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

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

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

因此,如果访问者之前没有访问过其他页面,则访问者刚刚到达我的网站,则无法发送我的 AJAX 请求。

我知道在 cakePHP 3.X 中 csrftoken 直接存放在会话中。 你有解决我的问题的方法吗?

感谢您的帮助

最好的问候,

逻辑

解决方法

如果有的话,您将从 response cookie 中读取值,该 cookie 是您的应用程序设置的 cookie,而不是从 request cookie,后者是用户发送到您的应用程序的 cookie。

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

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

另见

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。