Как я регистрирую необработанные HTTP-заголовки со Сценарием PHP?

Я использую ВИХРЕВОЙ сценарий для отправки данных POST через прокси к сценарию, и я хочу видеть, какие необработанные HTTP-заголовки ВИХРЕВОЙ сценарий отправляет. Список вещей я попробовал:

  • echo curl_getinfo($ch, CURLINFO_HEADER_OUT) не дает вывода.
  • file_get_contents('php://input') получает некоторые HTTP-заголовки, но не все.
  • print_r($_SERVER) также получает некоторые HTTP-заголовки, но не все (я знаю это, потому что должен быть заголовок X-Forwarded-For и нет),
  • Печатение всего superglobals ($ _POST, $ _GET, $ _REQUEST, $ _FILES и т.д.) все еще не показывает необработанные HTTP-заголовки.
  • http_get_request_headers(), apache_request_headers(), $http_response_header, $HTTP_RAW_POST_DATA не производят все.

Помощь?

5
задан Tom Haigh 16 June 2010 в 14:43
поделиться

3 ответа

Если вы работаете как модуль на Apache, то apache_request_headers () сделает то, что вам нужно.

Практически для любой другой архитектуры вы сможете выбрать только то, что записано в $ _SERVER, или вам нужно будет найти способ записать информацию, используя конфигурацию веб-сервера.

0
ответ дан 15 December 2019 в 06:15
поделиться

Вам также нужно установить опцию CURLINFO_HEADER_OUT:

CURLINFO_HEADER_OUT
TRUE для отслеживания строку запроса обработчика.
Доступно начиная с версии PHP 5.1.3. Префикс CURLINFO_ является намеренным.

http://www.php.net/manual/en/function.curl-setopt.php

Работает следующее:

<?php

$ch = curl_init('http://www.google.com');
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

echo curl_getinfo($ch, CURLINFO_HEADER_OUT);
1
ответ дан 15 December 2019 в 06:15
поделиться

Включите CURLOPT_HEADER, а не CURLINFO_HEADER_OUT, затем разделите на \ r \ n \ r \ n (где заканчивается заголовок) с максимальным количеством разделений 2:

<?php
$ch = curl_init('http://www.yahoo.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$result = curl_exec($ch);
if ($result !== false) {
    $split_result = split("\r\n\r\n", $result, 2);
    $header = $split_result[0];
    $body = $split_result[1];
    /** Process here **/
} else {
   /** Error handling here **/
}
2
ответ дан 15 December 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: