2016-12-02 13 views
5

Я попытался получить все заголовки с помощью apache_request_headers(), $ _SERVER, $ _ENV и getallheaders().php не получает пользовательские заголовки (Apache 2.4 + FPM/FastCGI php 7)

Я знаю, что Apache 2.4 сбросив неизвестные заголовки по соображениям безопасности и попытался обойти его, добавив:

SetEnvIfNoCase ^X (.*) HTTP_CUSTOM=$0 
RequestHeader set HTTP_CUSTOM %{HTTP_CUSTOM}e env=HTTP_CUSTOM 

, который успешно ловит/переименовывает известные заголовки, но при попытке поймать X-настраиваемого-заголовок , он всегда пуст.

В чем может быть причина?

+0

Что возвращает команда: 'apache2ctl -V'? Вы тестировали его с помощью добавления или слияния? 'RequestHeader add HTTP_CUSTOM% {HTTP_CUSTOM} e env = HTTP_CUSTOM' –

+0

@logic помог мне ответить? – bassxzero

ответ

0

Так что я на самом деле не уверен, что вы пытаетесь сделать.

Если вы пытаетесь добавить заголовки, которые начинаются с X с вашего запроса на ваш ответ, я бы использовал его в вашем файле htaccess.

Header echo ^X 

Если вы пытаетесь использовать значение заголовков в вашем PHP скрипте, то они должны быть в вашем $_SERVER массиве, но имена нормализованы. EG

X-Custom-Header: blah 
X-Na-Bra: true 

можно получить из

<?php 
    // note that headers are prefixed with "HTTP" and "-" and changed to "_" 
    echo $_SERVER['HTTP_X_CUSTOM_HEADER']; 
    echo $_SERVER['HTTP_X_NA_BRA']; 

    // either way you should be able to find them with a print_r($_SERVER); 
    // print_r(getallheaders()); should show the headers without normalized names 
    $tempArray = getallheaders(); 
    echo $tempArray['X-Custom-Header']; 
?> 

Это звучит, как вы хотите, чтобы получить значения из динамического ряда заголовков, которые начинаются с X. Если это так, то ваш код не будет работать в любом случае. Ваш код (если он сработает) всегда будет содержать последнее значение заголовка, начинающегося с X. Так что если у вас более 1 заголовок, начинающийся с X, тогда вам будут отсутствовать значения. Используя ваш код, вам нужно создать правило для каждого заголовка, который вы хотите передать в свой PHP-скрипт, который звучит как боль.

Если у меня что-то не хватает, то прокомментируйте ниже, и я обновлю этот ответ.