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

问题描述 投票:0回答:4

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

laravel header jwt token hosting
4个回答
17
投票

只是为谷歌人更新,因为我也在寻找解决方案,觉得修改核心代码不是一个好主意!

我得到的解决方案是使用中间件。在我的 JavaScript 中,我设置了

X-Authorization
标题而不是
Authorization
.

然后我创建了一个 HTTP 中间件类来获取这个标头并设置我们的授权标头 -

<?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
标头传递时它确实存在一样。


10
投票

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


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

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


2
投票

按照第二个解决方案。

我在 cPanel 托管中遇到了这个问题,一些安全模块或插件从标题中删除了授权数据,我正在使用

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);
    }
}

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


0
投票

我遇到过类似的问题。实际上,我们需要在两个地方启用重写规则。

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

处理授权标头

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

/etc/apache2/sites-enabled中添加相同的代码
# 处理授权标头 RewriteCond %{HTTP:Authorization} 。 RewriteRule . - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]*

© www.soinside.com 2019 - 2024. All rights reserved.