【问题标题】:How to set XSRF-TOKEN in Angular 11 API request header in Laravel 8?如何在 Laravel 8 的 Angular 11 API 请求标头中设置 XSRF-TOKEN?
【发布时间】:2021-07-07 11:04:07
【问题描述】:

我将Angular (11) frontend 集成到Laravel 8 应用程序中。为了发出 API 请求,用户需要登录。每次前端 Angular 向后端 API 发出请求时,我都会收到以下错误:

Status Code: 401 Unauthorized

我设置了VueJs frontend 来测试相同的 API 端点 URL,VueJs 可以访问 API 端点并从后端获取响应。当我将 VueJS 发出的 API 请求的 Request Headers 与 Angular 11 发出的请求进行比较时,我发现 Angular 11Request Headers 没有 X-XSRF-TOKEN。所以我认为这就是我收到上述错误的原因。

下面是如何在 Laravel 8 中设置 VueJsAXIOS 以在 API Request Headers 中包含 X-XSRF-TOKEN

window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
const token = document.head.querySelector('meta[name="csrf-token"]');

if (token) {
    window.axios.defaults.headers.common["X-CSRF-TOKEN"] = token.content;
}

Angular 11Laravel 8API Request Headers中如何设置X-XSRF-TOKENX-CSRF-TOKEN

注意:Angular 11 前端和 VueJs 前端都集成在 Laravel 8 应用程序的前端网页上,因此它们在同一个域中。所以我认为不需要laravel-cors 包。

【问题讨论】:

标签: angular laravel api csrf-token x-xsrf-token


【解决方案1】:

要获取 XSRF 令牌,您必须使用包含带有值 Fetch 的标头 X-CSRF-Token 的非修改 HTTP 方法。仅当用户已通过身份验证时才会颁发令牌。如果用户没有被认证,任何带有修改方法的请求都会被这个过滤器拒绝。有关 XSRF 保护的更多信息,请点击here

【讨论】:

  • 发送 XSRF 令牌: 1.您可以使用控制器创建一个新路由来显示 csrf 令牌,并借助以下功能。 ( ... 2.选择 postman 上的 Body 选项卡,然后选择 x-www-form-urlencoded。3.复制令牌并粘贴到 postman 作为名为 _token 的键的值。4.在您的 URL 上执行您的 post 请求/端点。
  • 我跟不上你,你为什么说要使用邮递员。我已经有一个可用的 API 端点,不需要使用 Postman 来测试 API url 端点。我想知道的是如何在 Angular 4、5、9 或 11 的 API 请求标头中设置 X-XSRF-TOKEN。
【解决方案2】:
imports: [ HttpClientModule,HttpClientXsrfModule.withOptions({cookieName: 'My-Xsrf-Cookie',headerName: 'My-Xsrf-Header'})]; // headerName is optional

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习
猜你喜欢
  • 2021-02-17
  • 2018-09-06
  • 2018-11-03
  • 2021-01-28
  • 1970-01-01
  • 2020-03-30
  • 2017-05-14
  • 2015-01-18
  • 1970-01-01
相关资源
最近更新 更多