授权标头未到达laravel项目中的服务器

the*_*tor 0 hosting header token jwt laravel

我正在使用JWT令牌对android用户进行授权,但是当我将其发送为null时,服务器会删除Authorization标头吗?我是否需要更改配置以允许标头传递给后端?

小智 8

在 public/.htaccess 中添加授权处理代码:

# Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

参考:https : //github.com/laravel/laravel/blob/master/public/.htaccess


Chr*_*ris 6

我只是在为Google员工进行更新,因为我也在寻找解决方案,因此觉得修改核心代码不是一个好主意!

我所拥有的解决方案是使用中间件。在我的JavaScript中,我设置的是X-Authorization标头而不是Authorization

然后,我创建了一个HTTP中间件类来选择此标头并设置我们的Authorization标头-

<?php

namespace App\Http\Middleware;

use Closure;

class XAuthorizationHeader
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next) {

        // check if we have an X-Authorization header present
        if($auth = $request->header('X-Authorization')) {
            $request->headers->set('Authorization', $auth);
        }

        return $next($request);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在App\Http\Kernel.php $middleware数组中,首先添加此中间件。

protected $middleware = [ XAuthorizationHeader::class,

然后Authorization,当您将其作为X-Authorization标头传递时,任何其他代码都将能够检索该标头,就好像它实际上在那里一样。