Нужно было получить заголовок 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, в общем потратил на это час и хотелось бы просто знать почему так ?