axios请求时Laravel如何自动添加X-XSRF-TOKEN?
How does Laravel add X-XSRF-TOKEN automatically when requesting via axios?
我有一个 API 使用相同的 auth
中间件。因此,当我成功登录时,我被重定向到一个页面,该页面从同一应用程序的 API 获取数据。在我的 app.blade.php
中,我只添加了 axios 和一个简单的 html 并注意,我的 header 中甚至没有 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
我得到了 API 数据,即使没有传递 csrf/xsrf 令牌,这很奇怪。
当我检查我的控制台以获取传出请求的日志时,这是输出
我的意思是,它是从哪里形成的?我的模板中甚至没有 csrf 令牌,也没有任何东西传递给我的 axios 配置。
我是不是遗漏了什么?
X-XSRF-TOKEN
Laravel stores the current CSRF token in a XSRF-TOKEN
cookie that is
included with each response generated by the framework. You can use
the cookie value to set the X-XSRF-TOKEN
request header.
This cookie is primarily sent as a convenience since some JavaScript
frameworks and libraries, like Angular and Axios, automatically place
its value in the X-XSRF-TOKEN
header.
我有一个 API 使用相同的 auth
中间件。因此,当我成功登录时,我被重定向到一个页面,该页面从同一应用程序的 API 获取数据。在我的 app.blade.php
中,我只添加了 axios 和一个简单的 html 并注意,我的 header 中甚至没有 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
我得到了 API 数据,即使没有传递 csrf/xsrf 令牌,这很奇怪。
当我检查我的控制台以获取传出请求的日志时,这是输出
我的意思是,它是从哪里形成的?我的模板中甚至没有 csrf 令牌,也没有任何东西传递给我的 axios 配置。
我是不是遗漏了什么?
X-XSRF-TOKEN
Laravel stores the current CSRF token in a
XSRF-TOKEN
cookie that is included with each response generated by the framework. You can use the cookie value to set theX-XSRF-TOKEN
request header.This cookie is primarily sent as a convenience since some JavaScript frameworks and libraries, like Angular and Axios, automatically place its value in the
X-XSRF-TOKEN
header.