Laravel 使用 Axios 401 未经身份验证的 API 护照

Laravel Passport Consuming own API with Axios 401 Unauthenticated

我似乎无法使用 Axios 使用我自己的 Laravel API,我已经尝试了我遇到的几乎所有解决方案 有人可以帮我吗,

我有正确的:

  1. 已安装。
  2. 注册护照服务提供商。
  3. 已迁移并生成护照密钥。
  4. 在我的用户模型中添加了 HasApiTokens 特征。
  5. 已将 Passport::routes() 添加到 AuthServiceProvider.php
  6. 改变我的config\auth.php.
  7. \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class 添加到我的网络中间件组的最后位置。根据 laravel 使用 api 和 javascript.
  8. 的文档

我已经在网络浏览器正常网络登录中使用 Vue 组件内的 Axios 对其进行了测试。并通过邮递员:api-login,使用返回的令牌使 api 调用它在我的开发机器上工作。但是在我的生产服务器(共享主机)上,它一直在使用 Web 登录并在 vue 组件中使用 Axios 的 Web 浏览器中返回 "Unauthorized",并且 API 也调用邮递员 returns "Unauthorized"登录后,我得到一个令牌,用于进行邮递员呼叫。

我检查了请求 header 也已发送:

  1. x-csrf-token
  2. x-xsrf-token
  3. 并且还包含在 cookie 中 header

请在共享主机上 运行 laravel 时确保以下事项。

  1. 检查您的根目录 URL 是否正确设置了 public 文件夹,或者您已将 public 文件夹的文件移动到根目录中。
  2. 最重要的是检查您是否拥有 .env 文件并且所有文件和文件夹都具有适当的权限。
  3. 此外,检查所有 PHP 模块(laravel 要求)是否使用正确的 PHP 版本正确加载。
  4. 如果上述步骤正确,则问题可能出在您的共享服务器使用 fcgi 而不是常规 PHP 模块。因此,HTTP_AUTHORIZATION 在那里失败了。您可以将以下代码添加到 .htaccess 文件 RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.+)$ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 中 HTTP_AUTHORIZATION 并解决问题。

希望这些能解决您的问题。