apache 我需要安装什么模块才能在$_SERVER数组中看到我的头变量?

xdyibdwo  于 2022-11-16  发布在  Apache
关注(0)|答案(2)|浏览(118)

我有一个服务器,我有一个php文件,我传递一些头变量,并在PHP文件中读取它,如下所示...

$_SERVER["HTTP_API_KEY"]

如果我在我的头数据中传递API_KEY,我在服务器中得到的值为$_SERVER["HTTP_API_KEY"]。现在我的代码已经被移到新的服务器,在那里我在我的$_SERVER数组中看不到$_SERVER["HTTP_API_KEY"]!它可能是PHP模块或Apache模块,我可能需要配置服务器。我试图找到解决方案,但不幸的是还没有得到一个。
如果有人知道这是什么就告诉我...

1mrurvl1

1mrurvl11#

我会试一试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!';

?>
ehxuflar

ehxuflar2#

我也有同样的问题。我通过反复试验发现:
Apache/php环境中,API-KEY的HTTP标头变为$_SERVER['HTTP_API_KEY']
请注意,-会变成_
API_KEY的标头不会传播到$_SERVER

相关问题