我正在使用JWT令牌来授权Android用户但是当我发送它时它达到null,服务器是否删除了Authorization标头?是否有一个配置我需要更改以允许我的标题传递到后端?
答案 0 :(得分:5)
只是为Google员工进行更新,因为我也在寻找解决方案,并且认为修改核心代码不是一个好主意!
我得到的解决方案是使用中间件。在我的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
标头,就好像它确实存在。
答案 1 :(得分:2)
我在cPanel托管中遇到了这个问题,一些安全模块或插件从标头中删除了授权数据,我使用的是Authorization Bearer
。我通过重命名Authorization
- &gt;来绕过它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);
}
}
不过,编辑核心代码并不理想。
答案 2 :(得分:0)
在public / .htaccess中添加授权处理代码:
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
参考:here