Laravel Passport使用Axios 401未认证的API消耗自己的API.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel Passport使用Axios 401未认证的API消耗自己的API.相关的知识,希望对你有一定的参考价值。
我似乎不能用Axios消耗我自己的Laravel API,我已经尝试了几乎所有的解决方案,我遇到了有人能帮助我吗?
我已经正确。
- 安装了
- 注册护照服务商。
- 迁移并生成护照密钥。
- 添加了
HasApiTokens
特质到我的用户模型中。 - 添加了
Passport::routes()
变成AuthServiceProvider.php
. - 改变我的
configauth.php
. - 新增
LaravelPassportHttpMiddlewareCreateFreshApiToken::class
按照laravel文档中关于使用javascript消耗自己的api的规定,我已经用Axios在vue组件中的web浏览器中进行了测试,并通过postman: api-login,使用返回的token进行api调用。
我已经用Axios在vue组件中进行了测试, 通过postman: api-login, 使用返回的token来调用api, 在我的开发机器上可以正常工作. 但在我的生产服务器上(共享主机),它一直在Web浏览器中返回 "Unauthorized",使用Web登录和在vue组件中使用Axios,在postman中的API调用也返回 "Unauthorized",登录后我得到一个令牌,我用它来进行Postman调用。
我检查了请求头也被发送了。
- x -csrf -token
- x-xsrf-token
- 并包含在cookie头中
答案
请确保以下事情,因为你是在共享主机上运行laravel。
- 检查你的根网址设置正确的公共文件夹或你已经移动的公共文件夹的文件到根。
- 最重要的是检查你有.env文件&所有的文件&文件夹有适当的权限。
- 此外,检查所有的PHP模块(laravel要求),正确加载适当的PHP版本。
- 如果以上步骤正确, 那么问题可能是你的共享服务器使用fcgi而不是普通的PHP模块. 因此,HTTP_AUTHORIZATION失败。你可以在.htaccess文件中加入以下代码。
RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.+)$ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
应该做HTTP_AUTHORIZATION & 解决问题。
我希望这些能解决你的问题。
以上是关于Laravel Passport使用Axios 401未认证的API消耗自己的API.的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.4 护照 axios 总是返回 Unauthenticated
Laravel Passport 通过网络问题使用自己的 API
Laravel 55 - Passport & Vue - auth/login/logout