【问题标题】:CSRF token not getting refreshed on location reloadCSRF 令牌在位置重新加载时未刷新
【发布时间】:2021-01-22 21:12:14
【问题描述】:

我有一些 js 代码在按下按钮时发送 axios 删除请求,然后通过执行 window.location.reload(true) 刷新页面但是如果我尝试按下在不同部分执行 axios 删除请求的按钮在同一页面上,我收到 419 错误,提示 CSRF 令牌没有在页面刷新时重新加载。如果我在它工作后手动刷新页面。

我也试过做一个简单的window.location.href = '/previousurl 也不管用

【问题讨论】:

    标签: javascript laravel csrf


    【解决方案1】:

    CSRF 令牌和 JavaScript(来自 laravel 文档)

    在构建 JavaScript 驱动的应用程序时,让您的 JavaScript HTTP 库自动将 CSRF 令牌附加到每个传出请求是很方便的。默认情况下,resources/js/bootstrap.js 文件中提供的 Axios HTTP 库会使用加密的 XSRF-TOKEN cookie 的值自动发送 X-XSRF-TOKEN 标头。如果您不使用此库,则需要为您的应用程序手动配置此行为。

    更多信息请参见https://laravel.com/docs/8.x/csrf

    【讨论】:

    • 这对我没有帮助,因为发送 CSRF 令牌不是问题,问题是使用 js 重新加载功能时 CSRF 令牌在页面重新加载时没有得到刷新
    【解决方案2】:

    通过将以下内容添加到我的 bootstrap.js 文件来解决问题

    let token = document.head.querySelector('meta[name="csrf-token"]');
    
    if (token) {
        window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 2021-09-10
      • 1970-01-01
      • 2015-12-18
      • 2022-10-31
      • 2017-11-27
      • 2023-02-08
      • 2021-08-20
      • 2015-08-17
      相关资源
      最近更新 更多