laravel passport 使用 javascript 调用接口出现 302 重定向错误如何解决??

发布于 2022-09-07 15:28:54 字数 717 浏览 12 评论 0

使用 laravel passport 作为 api 认证。使用授权码方式已经申请到了有效token

postman 中运行正常:

clipboard.png

通过 javascript 访问的时候却出现了问题!

clipboard.png

clipboard.png

javascript 代码如下:

clipboard.png

我表示特别无语,为什么 postman 使用 token 都正常,然后 javascript 使用 token 访问却认证不成功进行了重定向!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终陌 2022-09-14 15:28:54

当请求包含自定义请求头(有的时候Authorization也被算是自定义头)的时候, 浏览器在发起真正的请求前会以options方式发起preflight请求. 而Laravel没有正确处理好预检请求, 所以就会返回404, 然后web服务器重定向404到错误页面。

下面的解决方式不是非常优雅:
就是添加处理preflight的中间件.

<?php

namespace App\Http\Middleware;

use Closure;

class PreflightResponse
{
    /**
    * Handle an incoming request.
    *
    * @param \Illuminate\Http\Request $request
    * @param \Closure $next
    * @return mixed
    */
    public function handle($request, Closure $next )
    {
        if ($request->getMethod() === "OPTIONS") {
            return response('');
        }

            return $next($request);
     }
 }

然后在App/Http/kernel.php中注册该中间件.

protected $middleware = [
    \App\Http\Middleware\PreflightResponse::class,
    // ...
];

应该就能修复这个问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文