我有一个服务器,其中有一个 php 文件,我向该文件传递一些标头变量并在 PHP 文件中读取它,如下所示...
$_SERVER["HTTP_API_KEY"]
如果我在标头数据中传递
API_KEY
,我会在服务器中得到值 $_SERVER["HTTP_API_KEY"]
。现在我的代码已移至新服务器,但我在 $_SERVER["HTTP_API_KEY"]
数组中看不到 $_SERVER
!
我认为它可能是 PHP 模块或 Apache 模块,我可能需要使用服务器进行配置。我试图找到解决方案,但不幸的是还没有找到解决方案。
如果有人确切知道它是什么,请告诉我......
我会尝试一下 getallheaders 功能!
如果您想将密钥添加回 $_SERVER 数组,只需将其添加到文件顶部即可。
<?php
if(!isset($_SERVER['HTTP_API_KEY']) && isset(getallheaders()['API_KEY']))
$_SERVER['HTTP_API_KEY'] = getallheaders()['API_KEY'];
?>
获取第一个可用的密钥。
<?php
if(isset($_SERVER['HTTP_API_KEY']))
$key = $_SERVER['HTTP_API_KEY'];
elseif(isset(getallheaders()['API_KEY']))
$key = getallheaders()['API_KEY'];
else
die('Key not found.');
?>
适应于包含来自 Get 和 Post 请求的密钥。
<?php
if(isset($_SERVER['HTTP_API_KEY']))
$key = $_SERVER['HTTP_API_KEY'];
elseif(isset(getallheaders()['API_KEY']))
$key = getallheaders()['API_KEY'];
elseif($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['API_KEY']))
$key = $_POST['API_KEY'];
elseif(($_SERVER['REQUEST_METHOD'] === 'GET' || $_SERVER['REQUEST_METHOD'] === 'POST') && isset($_GET['API_KEY']))
$key = $_GET['API_KEY'];
else
die('Key not found.');
if($key !== '12345')
die('Invalid key.');
echo 'Hello world!';
?>
我也有同样的问题。我通过反复试验发现:
在
Apache/php
环境下,API-KEY
的 HTTP header 变为 $_SERVER['HTTP_API_KEY']
注意
-
变为 _
。
API_KEY
的标头不会传播到 $_SERVER
在我的标头中使用 API-KEY 而不是 API_KEY 对我有用。