Laravel 使用 Axios 401 未经身份验证的 API 护照
Laravel Passport Consuming own API with Axios 401 Unauthenticated
我似乎无法使用 Axios 使用我自己的 Laravel API,我已经尝试了我遇到的几乎所有解决方案
有人可以帮我吗,
我有正确的:
- 已安装。
- 注册护照服务提供商。
- 已迁移并生成护照密钥。
- 在我的用户模型中添加了
HasApiTokens
特征。
- 已将
Passport::routes()
添加到 AuthServiceProvider.php
。
- 改变我的
config\auth.php
.
- 将
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
添加到我的网络中间件组的最后位置。根据 laravel 使用 api 和 javascript. 的文档
我已经在网络浏览器正常网络登录中使用 Vue 组件内的 Axios 对其进行了测试。并通过邮递员:api-login,使用返回的令牌使 api 调用它在我的开发机器上工作。但是在我的生产服务器(共享主机)上,它一直在使用 Web 登录并在 vue 组件中使用 Axios 的 Web 浏览器中返回 "Unauthorized",并且 API 也调用邮递员 returns "Unauthorized"登录后,我得到一个令牌,用于进行邮递员呼叫。
我检查了请求 header 也已发送:
- x-csrf-token
- x-xsrf-token
- 并且还包含在 cookie 中 header
请在共享主机上 运行 laravel 时确保以下事项。
- 检查您的根目录 URL 是否正确设置了 public 文件夹,或者您已将 public 文件夹的文件移动到根目录中。
- 最重要的是检查您是否拥有 .env 文件并且所有文件和文件夹都具有适当的权限。
- 此外,检查所有 PHP 模块(laravel 要求)是否使用正确的 PHP 版本正确加载。
- 如果上述步骤正确,则问题可能出在您的共享服务器使用 fcgi 而不是常规 PHP 模块。因此,HTTP_AUTHORIZATION 在那里失败了。您可以将以下代码添加到 .htaccess 文件
RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.+)$ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
中 HTTP_AUTHORIZATION 并解决问题。
希望这些能解决您的问题。
我似乎无法使用 Axios 使用我自己的 Laravel API,我已经尝试了我遇到的几乎所有解决方案 有人可以帮我吗,
我有正确的:
- 已安装。
- 注册护照服务提供商。
- 已迁移并生成护照密钥。
- 在我的用户模型中添加了
HasApiTokens
特征。 - 已将
Passport::routes()
添加到AuthServiceProvider.php
。 - 改变我的
config\auth.php
. - 将
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
添加到我的网络中间件组的最后位置。根据 laravel 使用 api 和 javascript. 的文档
我已经在网络浏览器正常网络登录中使用 Vue 组件内的 Axios 对其进行了测试。并通过邮递员:api-login,使用返回的令牌使 api 调用它在我的开发机器上工作。但是在我的生产服务器(共享主机)上,它一直在使用 Web 登录并在 vue 组件中使用 Axios 的 Web 浏览器中返回 "Unauthorized",并且 API 也调用邮递员 returns "Unauthorized"登录后,我得到一个令牌,用于进行邮递员呼叫。
我检查了请求 header 也已发送:
- x-csrf-token
- x-xsrf-token
- 并且还包含在 cookie 中 header
请在共享主机上 运行 laravel 时确保以下事项。
- 检查您的根目录 URL 是否正确设置了 public 文件夹,或者您已将 public 文件夹的文件移动到根目录中。
- 最重要的是检查您是否拥有 .env 文件并且所有文件和文件夹都具有适当的权限。
- 此外,检查所有 PHP 模块(laravel 要求)是否使用正确的 PHP 版本正确加载。
- 如果上述步骤正确,则问题可能出在您的共享服务器使用 fcgi 而不是常规 PHP 模块。因此,HTTP_AUTHORIZATION 在那里失败了。您可以将以下代码添加到 .htaccess 文件
RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.+)$ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
中 HTTP_AUTHORIZATION 并解决问题。
希望这些能解决您的问题。