【发布时间】:2018-09-27 19:18:44
【问题描述】:
我正在使用 Laravel 5.6 和 Axios 库(标准 Laravel 5.6 包)进行个人项目。
我需要使用 Laravel 的 API 和 axios 的 http 请求发送第一个 GET 然后 POST 请求,但我没有使用 Passport 或任何类似的库,因为它是一个仅服务于 VueJS 以从数据库获取内容的内部 API。
如果我使用 auth:api 中间件设置我的 API 路由,我总是会得到未经授权的响应,无论请求类型是什么,这是错误输出:
错误:请求失败,状态码为 401
消息:
message: "Unauthenticated."
但是,正如我在文档中所读到的,axios 标头设置在 laravel 的 bootstrap.js 中,以从元标记中读取授权令牌(代码就在那里):
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
// further down the file...
let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
如果需要,这里是 http 请求代码:
axios.post('/api/latest', formData)
那么,如果设置了这些,为什么我会未经身份验证?
我已经尝试删除 auth:api 中间件,当然,它正在工作:
- Route::middleware('auth:api')->get('/latest', 'InternalApiController@latestEp');
+ Route::get('/latest', 'InternalApiController@latestEp');
我做错了什么?
【问题讨论】: