php не получает пользовательских заголовков (Apache 2.4 + FPM / FastCGI php 7)

Я попытался получить все заголовки, используя apache_request_headers (), $ _SERVER, $ _ENV и getallheaders ().

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

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

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

Что может быть причиной?

5

Решение

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

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

Header echo ^X

Если вы пытаетесь использовать значения заголовка в вашем скрипте PHP, тогда они должны быть в вашем $_SERVER массив, но имена нормализованы. НАПРИМЕР

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-скрипт, что звучит как боль.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]