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

fxnxkyjh  于 2023-04-07  发布在  其他
关注(0)|答案(4)|浏览(135)

我正在使用JWT令牌来授权android用户,但当我发送它时,它到达为null,服务器是否删除Authorization头?是否需要更改配置以允许我的头传递到后端?

ua4mk5z4

ua4mk5z41#

只是更新的谷歌,因为我也在寻找一个解决方案,并认为修改核心代码不是一个好主意!
我的解决方案是使用中间件。在我的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);
    }
}

然后在App\Http\Kernel.php$middleware阵列中,在一开始就添加此中间件。
protected $middleware = [ XAuthorizationHeader::class,
然后,任何进一步的代码都将能够检索Authorization头,就像当您将其作为X-Authorization头传递时它实际存在一样。

u5rb5r59

u5rb5r592#

在public/.htaccess中添加授权处理代码:
# Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
参考:https://github.com/laravel/laravel/blob/master/public/.htaccess

dnph8jn4

dnph8jn43#

按照第二个解决方案。

我在cPanel主机中遇到了这个问题,一些安全mod或插件从头中剥离了授权数据,我使用Authorization Bearer。我通过重命名Authorization-〉ApiToken并更新Laravel核心中的几行代码来绕过它。
文件vendor\laravel\framework\src\Illuminate\Http\Concerns\InteractsWithInput.php方法bearerToken

public function bearerToken()
{
    $header = $this->header('Authorization', $this->header('ApiToken', ''));

    if (Str::startsWith($header, 'Bearer ')) {
        return Str::substr($header, 7);
    }
}

顺便说一句,编辑核心代码并不理想。

goqiplq2

goqiplq24#

我也遇到过类似的问题。实际上,我们需要在两个地方启用重写规则。
在public/.htaccess中添加授权处理代码:

处理授权头

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

在**/etc/apache 2/sites-enabled**中添加相同的代码

#处理授权头RewriteCond %{HTTP:Authorization} . RewriteRule . - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]*

相关问题