PHP上的授权标头为空var_dump()

Pro*_*per 5 php apache .htaccess authorization header

我正在使用以下请求标头向服务器发送标头:

Host: xx.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: xx.com
Authorization: Bearer mytoken1234
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

在我的php文件中,我尝试使用var_dump()查看标头,并显示以下内容:

["HTTP_ACCEPT"]=>
  string(74) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
 ["HTTP_ACCEPT_ENCODING"]=>
  string(13) "gzip, deflate"
  ["HTTP_ACCEPT_LANGUAGE"]=>
  string(23) "en-US,en;q=0.8,fi;q=0.6"
  ["HTTP_AUTHORIZATION"]=>
  string(0) ""
  ["HTTP_CACHE_CONTROL"]=>
  string(9) "max-age=0"
  ["HTTP_CONNECTION"]=>
  string(10) "keep-alive"
  ["HTTP_COOKIE"]=>
  string(71) "cpsession=scocta5%3aBcbKZGvPoUCv2Yhb%2c2dc8a5c3bd6713b6ab029f16a46980e7"
Run Code Online (Sandbox Code Playgroud)

我尝试在.htaccess中添加以下行:

   SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
Run Code Online (Sandbox Code Playgroud)

要么

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

没有这些设置,Authorization标头根本不会显示在var_dump()上,但是现在只是string(0)“”。为什么我的服务器没有获得Authorization标头内容?

FdS*_*FdS 7

您需要将此代码添加到您的.htaccess

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

然后您将能够通过使用获取授权码$_SERVER['HTTP_AUTHORIZATION']


请参阅原始帖子:/sf/answers/3242666171/以了解更多信息。


Moh*_*ani 2

您可以使用apache_request_headers函数:

$headers = apache_request_headers();
var_dump($headers['Authorization']);
Run Code Online (Sandbox Code Playgroud)