Я думаю, что curl -vэто самый простой. Он будет отображать заголовки запроса (строки с префиксом «>») без необходимости записи в файл:
$ curl -v -I -H "Testing: Test header so you see this works" http://stackoverflow.com/
* About to connect() to stackoverflow.com port 80 (#0)
* Trying 69.59.196.211... connected
* Connected to stackoverflow.com (69.59.196.211) port 80 (#0)
> HEAD / HTTP/1.1
> User-Agent: curl/7.16.3 (i686-pc-cygwin) libcurl/7.16.3 OpenSSL/0.9.8h zlib/1.2.3 libssh2/0.15-CVS
> Host: stackoverflow.com
> Accept: */*
> Testing: Test header so you see this works
>
< HTTP/1.0 200 OK
...
@PiotrekDe -D -был аккуратным, но он мне не пригодился, поскольку он просто дублировал заголовки, которые -vуже отображались. Если вы хотите, чтобы они использовались без префикса для автоматического потребления машин, тогда, возможно, было бы лучше в этом случае, но я только хотел бы увидеть, в чем проблема, более подробно.
Пизис
1
Есть два очень полезных свойства флага verbose: во-первых, он также печатает процесс рукопожатия TLS при доступе к веб-сайту через HTTPS, например curl -v https://www.example.com; во-вторых, он также печатает CONNECTзапрос, если вы посещаете сайт через HTTP-прокси , например curl --proxy my-proxy:8080 http://www.example.com. Я полагаю, что это помогло бы большему количеству пользователей, если бы некоторые примеры этих двух функций упоминались в этом ответе.
Франклин Ю
1
TL; DR: не использовать-I В современном мире, когда люди спрашивают о заголовках, они, вероятно, говорят об API. И если вы используете -Iменталитет «я использую, чтобы увидеть заголовки с помощью моего веб-сервера Apache», вы потратите много времени на разработку HEADметода, который вы, вероятно, намереваетесь использовать GET. Прекратите говорить людям, чтобы использовать -I. Если они хотят HEAD, используйте -X HEAD(TWSS)
Бруно Броноски
141
В вопросе не указывалось, curlподразумевается ли команда командной строки named или вся библиотека cURL.
В следующем PHP-коде с использованием библиотеки cURL первый параметр используется в качестве метода HTTP (например, «GET», «POST», «OPTIONS»), а второй параметр - в качестве URL.
Это лучший ответ, потому что файл, используемый в этом методе, содержит все в curl_getinfo (), указанном ниже, а также более подробную информацию о запросе и ответе.
Mike_K
3
Вы можете использовать CURLOPT_WRITEHEADER для информации заголовка и CURLOPT_FILE для всего перевода
sturrockad
1
Имейте в виду, что если в соединении отказано, файлы, которые были указаны CURLOPT_WRITEHEADER и CURLOPT_FILEпустые.
вышла
34
Кто сказал что-нибудь об использованииphp?
Eddie B
1
Я проголосовал за ваш ответ, потому что, хотя вопрос не был связан с php, ваш ответ на основе php указал мне верное направление для решения моей собственной проблемы с отправкой токена на предъявителя. Спасибо. Я изложил свою причину здесь только в тщетной попытке показать этот вопрос в будущих поисках Google для разработчиков PHP с аналогичной проблемой.
Крис
49
Единственный способ увидеть мои исходящие заголовки (curl with php) - использовать следующие параметры:
создает файл, curl.traceкоторый начинается следующим образом:
== Info: About to connect() to www.google.com port 80 (#0)
== Info: Trying 209.85.229.104... == Info: connected
== Info: Connected to www.google.com (209.85.229.104) port 80 (#0)
=> Send header, 145 bytes (0x91)
0000: GET / HTTP/1.1
0010: User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3
0050: OpenSSL/0.9.7l zlib/1.2.3
006c: Host: www.google.com
0082: Accept: */*
008f:
Он также получил ответ (302 ответа, точнее, но не относящийся к делу), который был зарегистрирован.
Если вы хотите сохранить только заголовки ответа , используйте --dump-headerпараметр:
curl -D file url
curl --dump-header file url
Если вам нужна дополнительная информация о доступных опциях, используйте curl --help | less(она выводит пару сотен строк, но упоминает много опций). Или найдите страницу руководства, где есть более подробное объяснение того, что означают опции.
Это очень многословно, но, безусловно, показывает вам все, что вам нужно знать.
Трипли
27
Я попробовал ответы здесь и обнаружил, что самый полезный и простой из них еще не указан в качестве ответа, но это:
curl -v https://example.com/path
Это распечатывает заголовки REQUEST, а также заголовки RESPONSE, а также другие полезные, такие как сертификат SSL и повторное использование существующего TCP-соединения. -vКонечно, этот флаг можно комбинировать с другими флагами, такими как отслеживание перенаправлений и запрос HTTP-аутентификации:
Команда, подобная приведенной ниже, покажет три раздела: заголовки запроса, заголовки ответа и данные (разделенные CRLF). Это позволяет избежать технической информации и синтаксического шума, добавляемого скручиванием.
Я знаю, что это немного поздно, но мой любимый способ сделать это - netcatвы получите именно то, что curlотправили; это может отличаться от параметров --traceили --trace-ascii, которые не будут отображать символы не ASCII должным образом (они просто отображаются в виде точек или должны быть декодированы).
Вы можете сделать это очень легко, открыв два окна терминала, в первом типе:
nc -l localhost 12345
Это открывает процесс прослушивания на порту 12345 вашего локального компьютера.
Во втором окне терминала введите команду curl, например:
curl --form 'foo=bar' localhost:12345
В первом окне терминала вы увидите , что именно curl отправил в запросе.
Теперь, конечно nc, ничего не будет отправлено в ответ (если вы не введете это в себя), поэтому вам нужно будет прервать команду curl (control-c) и повторить процесс для каждого теста.
Тем не менее, это полезный вариант для простой отладки вашего запроса, поскольку вы нигде не задействуете двустороннюю передачу или не производите фиктивные итеративные запросы, пока не сделаете это правильно; когда вы довольны командой, просто перенаправьте ее на действительный URL-адрес, и все готово.
Вы можете сделать то же самое для любой библиотеки cURL, просто отредактировав ваш запрос так, чтобы он указывал на локального ncслушателя, пока вы не будете довольны им.
// Parse response and read cookies
preg_match_all('/^Set-Cookie: (.*?)=(.*?);/m', $response, $matches);
// Build an array with cookies
foreach( $matches[1] as $index => $cookie )
$cookies[$cookie] = $matches[2][$index];
return $cookies;
} // end http_login_client
Ответы:
Я думаю, что
curl -v
это самый простой. Он будет отображать заголовки запроса (строки с префиксом «>») без необходимости записи в файл:источник
curl -Ivs http://example.com > /dev/null
:-I
дляHEAD
запроса,-v
показать отправленные заголовки,-s
скрыть индикатор выполнения,> /dev/null
показать только вывод -v, избегая дублирования.-D -
был аккуратным, но он мне не пригодился, поскольку он просто дублировал заголовки, которые-v
уже отображались. Если вы хотите, чтобы они использовались без префикса для автоматического потребления машин, тогда, возможно, было бы лучше в этом случае, но я только хотел бы увидеть, в чем проблема, более подробно.curl -v https://www.example.com
; во-вторых, он также печатаетCONNECT
запрос, если вы посещаете сайт через HTTP-прокси , напримерcurl --proxy my-proxy:8080 http://www.example.com
. Я полагаю, что это помогло бы большему количеству пользователей, если бы некоторые примеры этих двух функций упоминались в этом ответе.-I
В современном мире, когда люди спрашивают о заголовках, они, вероятно, говорят об API. И если вы используете-I
менталитет «я использую, чтобы увидеть заголовки с помощью моего веб-сервера Apache», вы потратите много времени на разработкуHEAD
метода, который вы, вероятно, намереваетесь использоватьGET
. Прекратите говорить людям, чтобы использовать-I
. Если они хотятHEAD
, используйте-X HEAD
(TWSS)В вопросе не указывалось,
curl
подразумевается ли команда командной строки named или вся библиотека cURL.В следующем PHP-коде с использованием библиотеки cURL первый параметр используется в качестве метода HTTP (например, «GET», «POST», «OPTIONS»), а второй параметр - в качестве URL.
Пример использования:
Обратите внимание, что результаты почти идентичны следующей командной строке
источник
CURLOPT_WRITEHEADER
иCURLOPT_FILE
пустые.php?
Единственный способ увидеть мои исходящие заголовки (curl with php) - использовать следующие параметры:
Получение вашей отладочной информации:
источник
var_dump $data
вернет заголовки ответа, а также тело ответа. Var_dumpcurl_getinfo($ch)
выдаст вам заголовки запроса.CURLOPT_HEADER
заголовок ответа -CURLINFO_HEADER_OUT
заголовок запроса. Это то , что ОП просит :)--trace-ascii
Вариант завиток покажет заголовки запросов, а также заголовки ответа и тело ответа.Например, команда
создает файл,
curl.trace
который начинается следующим образом:Он также получил ответ (302 ответа, точнее, но не относящийся к делу), который был зарегистрирован.
Если вы хотите сохранить только заголовки ответа , используйте
--dump-header
параметр:Если вам нужна дополнительная информация о доступных опциях, используйте
curl --help | less
(она выводит пару сотен строк, но упоминает много опций). Или найдите страницу руководства, где есть более подробное объяснение того, что означают опции.источник
curl --trace-ascii {имя_файла} или используйте одну черту вместо имени файла, чтобы отправить его на стандартный вывод:
CURLOPT_DEBUGFUNCTION, если вы используете libcurl
Это показывает вам все, что curl отправляет и получает, с добавлением дополнительной информации.
источник
Я попробовал ответы здесь и обнаружил, что самый полезный и простой из них еще не указан в качестве ответа, но это:
Это распечатывает заголовки REQUEST, а также заголовки RESPONSE, а также другие полезные, такие как сертификат SSL и повторное использование существующего TCP-соединения.
-v
Конечно, этот флаг можно комбинировать с другими флагами, такими как отслеживание перенаправлений и запрос HTTP-аутентификации:Надеюсь это поможет.
источник
Команда, подобная приведенной ниже, покажет три раздела: заголовки запроса, заголовки ответа и данные (разделенные CRLF). Это позволяет избежать технической информации и синтаксического шума, добавляемого скручиванием.
Команда выдаст следующий вывод:
Описание:
-vs
- добавить заголовки (-v), но удалить индикатор выполнения (-s)2>&1
- объединить стандартный вывод и стандартный вывод в один стандартный выводsed
- отредактируйте ответ, полученный curl, используя команды ниже/^* /d
- удалить строки, начинающиеся с '*' (техническая информация)/bytes data]$/d
- удалить строки, заканчивающиеся на «байтовые данные]» (техническая информация)s/> //
- удалить префикс '>'s/< //
- удалить префикс «<»источник
Я знаю, что это немного поздно, но мой любимый способ сделать это -
netcat
вы получите именно то, чтоcurl
отправили; это может отличаться от параметров--trace
или--trace-ascii
, которые не будут отображать символы не ASCII должным образом (они просто отображаются в виде точек или должны быть декодированы).Вы можете сделать это очень легко, открыв два окна терминала, в первом типе:
Это открывает процесс прослушивания на порту 12345 вашего локального компьютера.
Во втором окне терминала введите команду curl, например:
В первом окне терминала вы увидите , что именно curl отправил в запросе.
Теперь, конечно
nc
, ничего не будет отправлено в ответ (если вы не введете это в себя), поэтому вам нужно будет прервать команду curl (control-c) и повторить процесс для каждого теста.Тем не менее, это полезный вариант для простой отладки вашего запроса, поскольку вы нигде не задействуете двустороннюю передачу или не производите фиктивные итеративные запросы, пока не сделаете это правильно; когда вы довольны командой, просто перенаправьте ее на действительный URL-адрес, и все готово.
Вы можете сделать то же самое для любой библиотеки cURL, просто отредактировав ваш запрос так, чтобы он указывал на локального
nc
слушателя, пока вы не будете довольны им.источник
сбросить заголовки в одном файле и полезную нагрузку ответа в другом файле
источник
Вы также можете использовать
-I
опцию, если вы хотите отправить запрос HEAD, а не запрос GET.источник
Вот мой http-клиент в php для отправки запросов с включенными файлами cookie:
/// DEBUG info echo $ response; var_dump (curl_getinfo ($ ch)); ///
источник
Вы можете увидеть это с помощью
-iv
источник
Вы можете использовать wireshark или tcpdump для просмотра любого сетевого трафика (http тоже).
источник
Сделайте пример запроса к https://http-tools.appspot.com/reflect-http-request/some-unique-id и проверьте, что содержит этот запрос (заголовок запроса, тело запроса, параметры запроса) по соответствующему URL-адресу поиска https : //http-tools.appspot.com/reflect-http-request-finder/some-unique-id . Вы можете использовать любую строку вместо
some-unique-id
, проверьте https://http-tools.appspot.com для более подробной информации.источник