如何访问$ _SERVER中未出现的请求标头?

vam*_*min 15 php http http-headers

我试图在PHP中创建REST API,我想实现类似于Amazon S3方法的身份验证方案.这涉及在请求中设置自定义"授权"标头.

我以为我能用$ _SERVER ['HTTP_AUTHORIZATION']访问标题,但在var_dump($ _ SERVER)中找不到它.apache_request_headers()函数可以解决我的问题,但是我的主机将PHP实现为CGI,因此它不可用.

有没有其他方法可以访问PHP中的完整请求标头?

cha*_*aos 24

你需要做一些mod_rewrite巫术让你的标题通过CGI屏障,如下所示:

RewriteEngine on
RewriteRule .? - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

<?php
    $auth = $_SERVER['HTTP_AUTHORIZATION'];
?>
Run Code Online (Sandbox Code Playgroud)

请注意,如果您将其mod_rewrite用于其他目的,最终可能会出现这种情况$_SERVER['REDIRECT_HTTP_AUTHORIZATION'].