Laravel 获取请求标头

2022-08-30 14:13:12

我正在使用POSTMAN将GET请求发送到API中,其中包含包含授权的标头。

我知道数据标头有效,因为如果没有,路由将返回401错误。

我想像这样获取授权标头:

$access_token = Request::header('Authorization');

但注意到它返回 NULL。

因此,我试图用以下方式捕获这些值:

die(var_dump(Request::header()));

并注意到它不包含任何授权标头。只需托管 Cookie 标头。


更新

应该得到Authorization: Bearer ACCESS TOKEN


答案 1

你用的是什么邮递员版本?

您是否在本地计算机或受控服务器上,某些托管公司不允许授权标头。

.htaccess modification

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

答案 2

德施涅普的答案是正确的,但我也有问题。你必须做两件事:

  1. 检查mod_rewrite是否可用并激活。
  2. 更新位于公用文件夹中的 Laravel 的 .htaccess 文件。

在第一点中,您必须检查“mod_rewrite”模块是否通过php_info函数在单独的php文件中可用。然后,如果它可用,您必须激活它,这取决于您的Web服务器的配置,在我的Nitrous框中,我将这些行添加到我的httpd.conf文件中:

<IfModule mod_rewrite>
   RewriteEngine On
</IfModule>

或者,您也可以在 .htaccess 文件中激活该模块:

RewriteEngine On

然后,在位于 laravel 应用程序根目录下的公用文件夹中的同一 .htaccess 文件中,您必须添加以下行:

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

这些线对我有用。您的 .htaccess 文件应如下所示:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

就是这样,您应该在 Request::header() 数组中具有授权标头。只是为了澄清这些是Apache的问题,而不是Laravel本身的问题。


推荐