CURL разобрать headers

eno

Новичок
Ребята, привет,

Столкнулся с нестандартной задачей. Сторонний сервер посылает POST запрос на мой скрипт, где в заголовках кроме стандартных POST, Host, Content-Type, Content-Length, добавляет еще несколько пользовательских строк типа Method_name: и дальше имя метода. Имена разные, соответствующие определенному методу.
Я парсю тело POST-а, но мне также нужно спарсить этот заголовок, чтобы понимать на какую функцию бросать парсинг тела, в зависимости от метода.
Гуглил, спрашивал друзей. Не могу решить задачу. Никто не сталкивался с парсингом заголовков? Подозреваю, что через CURL можно как-то изголиться и разобрать заголовок. Подскажите пожалуйста.

Заранее благодарен.
 

eno

Новичок
AmdY
не то. Читайте внимательно там: "sent by the server in response to a HTTP request"
У меня же не ответ на мой запрос. А запрос от стороннего сервера на мой скрипт.
 

eno

Новичок
apache_request_headers тоже не предлагайте. Т.к. велика возможность, что сайт будет не на апаче вообще.
 

Вурдалак

Продвинутый новичок
eno, а какого хрена ты в заголовке написал «CURL»? $_SERVER['HTTP_METHOD_NAME']. cURL нужен, когда ты выступаешь в качестве клиента, а не сервера.
 

eno

Новичок
Вурдалак "Подозреваю, что через CURL можно как-то изголиться и разобрать заголовок."
Т.е. через CURL нельзя?
 

AmdY

Пью пиво
Команда форума

eno

Новичок
понял. ОК.
$_SERVER['HTTP_METHOD_NAME'] кстати не сработал. Вообще все доп. поля хидеров игнорируются суперглобальным массивом. Ни через var_dump($_SERVER['HTTP_METHOD_NAME']); ни через var_dump($_POST) не светятся вообще.
 

Вурдалак

Продвинутый новичок

флоппик

promotor fidei
Команда форума
Партнер клуба
понял. ОК.
$_SERVER['HTTP_METHOD_NAME'] кстати не сработал. Вообще все доп. поля хидеров игнорируются суперглобальным массивом. Ни через var_dump($_SERVER['HTTP_METHOD_NAME']); ни через var_dump($_POST) не светятся вообще.
Некоторые хитрые вебсерверы вообще не пересылают php ничего кроме строго преопределенного набора заголовков. Возможно их режет сам вебсервер.
 
  • Like
Реакции: AmdY

eno

Новичок
Разобрались с вопросом. Забыл сюда написать, исправляюсь. Итак, если у кого будет тоже самое, то:
1. Хватаем заголовки через apache_request_headers() (функция работает теперь не только на апаче но и на fast-cgi тоже, т.ч. можно юзать везде). Она захватит все заголовки, кастомные тоже. Дальше останется только разобрать этот массив на нужное-ненужное. Если кому-то некошерно само название apache в функции, то юзайте ее псевдоним - getallheaders();
2. Хватаем дальнейшее тело вот так: $body = file_get_contents('php://input'); Такой изврат нужен для того, если POST был не с хидером Content-Type: application/x-www-form-urlencoded\r\n или multipart/form-data, а с любым другим, например application/xml. В этом случае массив $_POST будет пустым, и захватить его можно только через 'php://input'.

Ну вот и все.
Еще раз извиняюсь за сабж поста, я не очень силен в курле, полагал, что у него есть какая то возможность прием обрабатывать тоже.
 
Сверху