php - 如何访问未出现在 $_SERVER 中的请求 header ?

标签 php http http-headers

我正尝试在 PHP 中创建一个 REST API,并且我想实现一个类似于 Amazon 的 S3 方法的身份验证方案。这涉及在请求中设置自定义“授权” header 。

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

还有其他方法可以让我在 PHP 中访问完整的请求 header 吗?

最佳答案

你需要做一些 mod_rewrite 魔法来让你的 header 通过 CGI 障碍,就像这样:

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

<?php
    $auth = $_SERVER['HTTP_AUTHORIZATION'];
?>

请注意,如果您将 mod_rewrite 用于其他目的,它最终可能会成为 $_SERVER['REDIRECT_HTTP_AUTHORIZATION']

关于php - 如何访问未出现在 $_SERVER 中的请求 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/827060/

相关文章:

安卓文件上传

c# - 具有 HTTP header 的 DataService 中的 HttpContext 与 OperationContext

PHP 仅在值存在时才分配给数组

php - Bluehost MySQL 国家/地区特定字符编码

http - 如何关闭Fiddler断点

Angular 7 上传到带有进度指示器的 blob 存储

javascript - Nativescript http php 请求

php - 在桌面浏览器上正确渲染表情符号

c++ - 如何区分URL的域名和资源?

java - 如何使用 Retrofit 为所有请求定义一个 Header?