首页 > 后端开发 > php教程 > 如何解决 Laravel 5.5 AJAX'419(未知状态)”CSRF 错误?

如何解决 Laravel 5.5 AJAX'419(未知状态)”CSRF 错误?

Patricia Arquette
发布: 2024-12-04 16:49:11
原创
164 人浏览过

How to Resolve the Laravel 5.5 AJAX

Laravel 5.5 AJAX 调用:解决“419(未知状态)”错误

在 Laravel 5.5 中执行 AJAX 请求时,您可能会遇到“419(未知状态)”错误。这通常表示跨站请求伪造 (CSRF) 令牌验证存在问题。

了解 Laravel 的 CSRF 保护

Laravel 的 CSRF 保护机制可防止通过以下方式提交未经授权的请求你的网站。它通过生成每个 POST 请求中必须包含的唯一令牌来实现此目的。

修复 419 错误

要修复 419 错误,您需要确保您的 AJAX 请求受到 CSRF 令牌的适当保护。您可以分两步执行此操作:

  1. 在 HTML 标头中生成 CSRF 令牌

    中生成 CSRF 令牌。在视图部分,添加以下内容:
    <meta name="csrf-token" content="{{ csrf_token() }}">
    登录后复制
  2. 在 JavaScript 中检索 CSRF 令牌:
    在 AJAX 请求设置中,检索 CSRF 令牌来自<元>标头中的标记:

    $.ajaxSetup({
      headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
    });
    登录后复制

示例实现

这是带有 CSRF 令牌保护的 AJAX 调用的更新版本:

$('.company-selector li > a').click(function(e) {
  e.preventDefault();

  var companyId = $(this).data("company-id");

  $.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });

  $.ajax({
    url: '/fetch-company/' + companyId,
    dataType: 'json',
    type: 'POST',
    data: {},
    contentType: false,
    processData: false,
    success: function(response) {
      console.log(response);
    }
  });
});
登录后复制

通过合并这些更改,您的 AJAX 请求将受到 CSRF 的保护攻击,解决“419(未知状态)”错误。

以上是如何解决 Laravel 5.5 AJAX'419(未知状态)”CSRF 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板