看起来像apache mod_php“吃掉”授权头。
这对我有用:
if (!$request->headers->has('Authorization') && function_exists('apache_request_headers')) { $all = apache_request_headers(); if (isset($all['Authorization'])) { $request->headers->set('Authorization', $all['Authorization']); } }
问题和接受的答案之间似乎存在脱节。如果授权标头可用于PHP的getallheaders(),那么Apache显然不会剥离它。我猜这个问题与Symfony的使用有关。 $ this-> getRequest() - >标头不返回包含标头的对象,它返回HeaderBag。假设getallheaders()可以看到标题,这可以:
$this->getRequest()->headers->all();
或者更具体地说:
$this->getRequest()->headers->get('Authorization');
你也可以使用apache_request_headers();获取具有Authorization标头的原始标头。
它最有可能被Apache剥夺。 Bearer 不是一个已知的方案,它是一种专有的。
Bearer
因此,要么使用自定义标题,请使用 X-Bearer-Token: 123456789 或者您可以尝试在您的帐户中添加此重写条件 .htaccess
X-Bearer-Token: 123456789
.htaccess
RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
Symfony正在使用php全局变量 $_SERVER 创造 Request->headers 变量,但是 $_SERVER 不包含所有标题。要获得所有标头,您必须使用php本机功能 getallheaders() 更多信息: http://php.net/manual/en/function.getallheaders.php
$_SERVER
Request->headers
getallheaders()