Laravel API ajax 请求未通过身份验证

Posted

技术标签:

【中文标题】Laravel API ajax 请求未通过身份验证【英文标题】:Laravel API ajax request not being authenticated 【发布时间】:2021-08-04 08:55:16 【问题描述】:

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

$.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');,我们就能够接收数据。用户实际上是登录

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

【问题讨论】:

你从哪里得到令牌?你用的是laravel护照吗? @Aless55 var _token = $("meta[name='csrf-token']").attr("content"); Laravel 认证。我不确定那是不是护照。 【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于Laravel API ajax 请求未通过身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 + Passport:总是未经身份验证的错误

Laravel + React,使用 Laravel 身份验证的 api

Laravel 5.7 Ajax 发布请求返回 419 状态码

如何通过 jQuery AJAX 从使用 OAuth 1.0 身份验证的 Upwork API 请求 JSONP 文件?

Laravel - 通过外部 API 进行身份验证

Laravel 5.6 护照 API 身份验证在获取请求中不起作用