【问题标题】:How does Laravel add X-XSRF-TOKEN automatically when requesting via axios?通过 axios 请求时,Laravel 如何自动添加 X-XSRF-TOKEN?
【发布时间】:2019-12-17 23:30:06
【问题描述】:

我有一个使用相同 auth 中间件的 API。因此,当我成功登录时,我会被重定向到一个页面,该页面从同一个应用程序的 API 获取数据。在我的app.blade.php 中,我只添加了 axios 和一个简单的 html,请注意,我的标题 except 中什至没有 csrf-token 元数据,而我的登录页面中包含 @csrf我的表格。

这是我的app.blade.php 布局

<html lang="en">
<head>
  <meta charset="UTF-8">
</head>
<body>
  @yield('content')

  <script src="{{ asset('js/axios.min.js') }}"></script>
  <script>
    const http = axios.create({
      baseURL: '/api'
    });

    http.interceptors.request.use((request) => {
      console.log('Starting Request', request);
      return request;
    });
  </script>

  @stack('scripts')
</body>
</html>

在我的一个页面中:

@extends('layouts.app')

@section('content')
<div>
  <h1>Hello World</h1>
</div>
@endsection

@push('scripts')
<script>
  async function test() {
    const { data } = await http('/some-page');

    // I'm getting a data even without passing a csrf token?
    console.log(data);
  }

  test();
</script>
@endpush

即使没有传递奇怪的 csrf/xsrf 令牌,我也能获取 API 数据。

当我检查控制台是否有传出请求的日志时,这是输出

我的意思是,它是从哪里形成的?我的模板中什至没有 csrf 令牌,也没有任何东西传递给我的 axios 配置。

我错过了什么吗?

【问题讨论】:

标签: javascript php laravel laravel-5 csrf


【解决方案1】:

查看docs on XSRF token

X-XSRF-TOKEN

Laravel 将当前的 CSRF 令牌存储在 XSRF-TOKEN cookie 中,即 包含在框架生成的每个响应中。您可以使用 设置X-XSRF-TOKEN请求头的cookie值。

此 cookie 主要是为了方便而发送的,因为某些 JavaScript 框架和库,如 Angular 和 Axios,会自动放置 X-XSRF-TOKEN 标头中的值。

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2019-05-10
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2017-04-10
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多