Laravel获取请求标头

maj*_*rif 27 php oauth-2.0 laravel

我正在使用POSTMAN通过包含授权的标头向api发送GET请求.

我知道数据头是有效的,因为如果它没有路由返回401错误.

我想获得Authorization标头,如下所示:

$access_token = Request::header('Authorization');
Run Code Online (Sandbox Code Playgroud)

但是注意到它返回NULL.

所以我尝试用以下方法捕获值:

die(var_dump(Request::header()));
Run Code Online (Sandbox Code Playgroud)

并注意到它不包含任何Authorization标头.只需托管cookie标头.


更新

应得 Authorization: Bearer ACCESS TOKEN

dsc*_*epp 48

你使用什么POSTMAN版本?

您是在本地计算机还是托管服务器上,某些托管公司不允许使用AUTHORIZATION HEADER.

.htaccess修改

 RewriteEngine On
 RewriteCond %{HTTP:Authorization} .
 RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Run Code Online (Sandbox Code Playgroud)


dav*_*ver 8

来自dschniepp的答案是对的,但我也有这个问题.你必须做两件事:

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

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

<IfModule mod_rewrite>
   RewriteEngine On
</IfModule>
Run Code Online (Sandbox Code Playgroud)

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

RewriteEngine On
Run Code Online (Sandbox Code Playgroud)

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

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

这些线路对我有用.您的.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>
Run Code Online (Sandbox Code Playgroud)

就是这样,你应该在Request :: header()数组中拥有Authorization头.只是为了澄清这些是Apache的问题,而不是Laravel本身.