问题:
我正在执行Laravel 5.5 中 AJAX 调用但遇到“419 (未知状态)”错误。尽管我的页面上没有任何表单,但我怀疑问题出在 CSRF 令牌上。我该如何解决这个问题?
答案:
客户端:
在 HTML head 部分中,插入以下:
<meta name="csrf-token" content="{{ csrf_token() }}">
这会生成一个唯一的 CSRF 令牌,服务器将使用该令牌验证传入请求。
AJAX 请求:
修改您的 AJAX 请求以在标头中包含 CSRF 令牌:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
这可确保服务器可以验证请求的来源并防止 CSRF
Laravel 中间件(可选):
Laravel 自动应用 CSRF 中间件来保护 POST 请求。要针对特定路由(例如,处理 AJAX 调用的中间件)禁用此中间件,请将以下行添加到您的 AppHttpMiddlewareVerifyCsrfToken 中间件:
/** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ '/fetch-company/*', ];
参考:
以上是Laravel 5.5 AJAX 419 错误:如何修复 CSRF 令牌问题?的详细内容。更多信息请关注PHP中文网其他相关文章!