Ответ 1
Наконец:
print_r($_REQUEST);
Что касается большинства входящих элементов: Руководство PHP.net: $_REQUEST
Мне нужен код PHP, который делает дамп всей информации в HTTP-запросе, включая заголовки и содержимое любой информации, включенной в запрос POST. В принципе, диагностический инструмент, который выплескивает именно то, что я отправляю на сервер.
Есть ли у кого-нибудь код, который делает это?
Наконец:
print_r($_REQUEST);
Что касается большинства входящих элементов: Руководство PHP.net: $_REQUEST
Простым способом было бы:
<?php
print_r($_SERVER);
print_r($_POST);
print_r($_GET);
print_r($_FILES);
?>
Вам потребуется немного массирования, чтобы получить все в том порядке, в котором вы хотите, и исключить переменные, которые вам не интересны, но должны дать вам начало.
Хорошо, вы можете прочитать полностью тело POST так
echo file_get_contents( 'php://input' );
И, если ваш веб-сервер - это Apache, вы можете прочитать заголовки запросов так
$requestHeaders = apache_request_headers();
Никто не упоминал, как правильно удалять заголовки HTTP ни при каких обстоятельствах.
Из спецификации CGI rfc3875, раздел 4.1.18:
Мета-переменные с именами, начинающимися с "HTTP_", содержат значения, считанные из полей заголовка запроса клиента, если используемым протоколом является HTTP. Имя поля заголовка HTTP преобразуется в верхний регистр, имеет все вхождения "-" заменены на "и имеет" HTTP", который имя мета-переменной.
foreach ($_SERVER as $key => $value) {
if (strpos($key, 'HTTP_') === 0) {
$chunks = explode('_', $key);
$header = '';
for ($i = 1; $y = sizeof($chunks) - 1, $i < $y; $i++) {
$header .= ucfirst(strtolower($chunks[$i])).'-';
}
$header .= ucfirst(strtolower($chunks[$i])).': '.$value;
echo $header.'<br>';
}
}
Подробности: http://cmyker.blogspot.com/2012/10/how-to-dump-http-headers-with-php.html
Объединив ответы Peter Bailey и Cmyker, вы получите что-то вроде:
<?php
foreach ($_SERVER as $key => $value) {
if (strpos($key, 'HTTP_') === 0) {
$chunks = explode('_', $key);
$header = '';
for ($i = 1; $y = sizeof($chunks) - 1, $i < $y; $i++) {
$header .= ucfirst(strtolower($chunks[$i])).'-';
}
$header .= ucfirst(strtolower($chunks[$i])).': '.$value;
echo $header."\n";
}
}
$body = file_get_contents('php://input');
if ($body != '') {
print("\n$body\n\n");
}
?>
который работает с встроенным веб-сервером php -S
, что является весьма удобной функцией PHP.
Если вам нужны фактические заголовки HTTP (как запрос, так и ответ), попробуйте hurl.it.
Вы можете использовать команду PHP apache_request_headers()
, чтобы получить заголовки запроса и apache_response_headers()
, чтобы получить текущие заголовки ответов. Обратите внимание, что ответ может быть изменен позже в PHP script, пока контент не был отправлен.
file_get_contents ('php://input') не всегда будет работать.
У меня есть запрос с заголовками "content-length = 735", а "php://input" - пустая строка. Это зависит от того, насколько хорош/действителен HTTP-запрос.
Кроме того, вы можете использовать get_headers(). это не зависит от apache..
print_r(get_headers());
Проблема заключалась в том, что в URL я написал http://my_domain вместо https://my_domain