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

CakePHP 4 csrfToken cookie not set on the first page load

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

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

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

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

我知道在cakePHP 3.X 中,csrfToken 直接存储在session 中。 你有办法解决我的问题吗?

感谢您的帮助

此致,

洛伊克

如果有的话,您将从 response cookie 中读取值,即您的应用程序设置的 cookie,而不是从 请求中读取值 cookie,即用户发送给您的应用程序的cookie。

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

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

另见