首页 > 解决方案 > Laravel API ajax 请求未通过身份验证

问题描述

我们计划对post一些数据使用ajax。这是我们的代码:

$.ajax({
  type: "POST",
  url: "{{route('something.someevent')}}",
  data: {
    _token: _token
  },
  success: function(o) {
    console.log(o);
  },
  dataType: "json"
});

问题是我们得到

[HTTP/1.1 401 未授权 133ms]

如果我们删除$this->middleware('auth');on 结构,我们就能够接收数据。用户实际上已登录

如何使 API 的身份验证与应用程序相同?谢谢是提前

标签: javascriptjquerylaravellaravel-8

解决方案


我们将令牌作为标头添加到所有 ajax 请求中,而不是将其包含在正文中。

您可以将以下内容添加到单个 ajax 请求中。

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

或者,如果您希望标头自动注入到您发出的每个 ajax 请求中,您可以在某处的全局脚本中定义它。

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

推荐阅读