如果页面空闲,来自 CSRF 的 Yii2 错误请求

Yii2 Bad Request from CSRF if page has been idle

如果页面空闲,即使是很短的时间(<5 分钟),我也会收到错误的请求错误,这会导致糟糕的用户体验。有没有办法让 CSRF 密钥在页面空闲的情况下也能正常工作?

(我在这里假设没有其他浏览器向您的后端发送其他请求 window/tab,因为这也可能会更改 CSRF)

当前的 CSRF 要么存储在它自己的 cookie 中,要么存储在会话中。所以基本上,如果它存储的地方过期,它就会过期。

所以基本上,如果您使用了 Request::enableCsrfCookie(这是默认设置),请确保还更新 Request::csrfCookie 设置以稍后过期(您可以为此添加 'expire') .这个的基本值应该是 "session"(直到浏览器 window 关闭)。

如果您不使用它并且 CSRF 存储在会话中,则您必须提高会话的 TTL。