@WiNNeR_tig

Почему не видит x-api-signature-SHA256?

Нужно было получить заголовок X-Api-Signature-SHA256 , но он всяческий не хотел передаваться, вместе с ним передаётся ещё 10 заголовков типа User-Agent X-Forwarded-For итд , все их я мог получить.

Мой код который не давал мне получить X-Api-Signature-SHA256 :

if (!function_exists('getallheaders')){ 
    function getallheaders(){ 
		$headers = []; 
		foreach ($_SERVER as $name => $value){
			if (substr($name, 0, 5) == 'HTTP_'){ $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } 
		} 
		return $headers; 
    } 
}

$head                                      = getallheaders();
$validSignatureFromNotificationServer      = $head['X-Api-Signature-SHA256'];


А когда мне посоветовали перевести заголовки в нижний регистр:

if (!function_exists('getallheaders')){ 
    function getallheaders(){ 
		$headers = []; 
		foreach ($_SERVER as $name => $value){
			if (substr($name, 0, 5) == 'HTTP_'){ $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } 
		} 
		return $headers; 
    } 
}

$head = array_change_key_case(getallheaders(), CASE_LOWER);
$validSignatureFromNotificationServer      = $head[mb_strtolower('x-api-signature-SHA256')];


Всё заработало, но остался вопрос почему так ? Почему без проблем я получал другие заголовки типа типа User-Agent X-Forwarded-For а именно X-Api-Signature-SHA256 нет ? Есть предположения что из за функции getallheaders() которая не работает с cgi хотя в ней тоже стоит strtolower, в общем потратил на это час и хотелось бы просто знать почему так ?
  • Вопрос задан
  • 806 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы