You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel表单校验提示Expired token 提交后返回仍显示旧数据如何解决

你对CSRF防护的作用存在认知偏差,CSRF仅用于拦截跨站点的恶意伪造请求,和浏览器后退时展示已提交表单数据的行为完全无关,该现象是浏览器默认的页面缓存机制导致的。

对应解决方案如下:

方案1:服务端禁用表单页缓存(推荐优先使用)

在返回表单视图的index方法中添加缓存控制响应头,强制浏览器每次访问表单页都从服务端拉取最新内容,不会在本地缓存页面状态:

function index(){
    return response()
        ->view('recette')
        ->header('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0')
        ->header('Pragma', 'no-cache')
        ->header('Expires', 'Fri, 01 Jan 1990 00:00:00 GMT');
}

方案2:前端兜底清空表单

在表单页的前端代码中加入JS逻辑,监测到页面是通过后退操作加载时,自动重置表单清空内容:

window.addEventListener('pageshow', function(e) {
    // 识别后退/缓存加载场景
    const isBackLoad = e.persisted || (window.performance?.navigation?.type === 2);
    if (isBackLoad) {
        document.querySelector('form').reset();
    }
});

两个方案搭配使用可以覆盖绝大多数浏览器场景,完全避免用户后退看到已提交的表单内容。

内容的提问来源于stack exchange,提问作者forcela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 09:33:01