Просмотр заголовков запросов cURL с данными POST - PullRequest
8 голосов
/ 04 августа 2011

Как просмотреть полные заголовки запросов, , включая данные постов , используя libcurl в php?

Я пытаюсь смоделировать пост страницы,что, когда это делается из браузера и просматривается в заголовках Live HTTP, выглядит следующим образом:

https://###.com
POST /###/### HTTP/1.1
Host: ###.###.com
...snipped normal looking headers...
Content-Type: multipart/form-data; boundary=---------------------------28001808731060
Content-Length: 697
-----------------------------28001808731060
Content-Disposition: form-data; name="file_data"; filename="stats.csv"
Content-Type: text/csv
id,stats_id,scope_id,stat_begin,stat_end,value
61281,1,4,2011-01-01 00:00:00,2011-12-31 23:59:59,0
-----------------------------28001808731060
Content-Disposition: form-data; name="-save"
Submit
-----------------------------28001808731060--

Итак, мы прекрасно видим файл, который я загружаю, его содержимое, все там.Но все мои попытки получить данные из cURL, когда я пытаюсь сделать одно и то же сообщение из php (используя CURLOPT_VERBOSE или CURLINFO_HEADER_OUT), показывают заголовки запроса, в которых отсутствуют данные публикации, например:

POST /###/### HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Host: ###.###.com
...snipped normal-looking headers...
Content-Length: 697
Content-Type: multipart/form-data; boundary=----------------------------e90de36c15f5

Основываясь на Content-Length здесь, кажется, что дела идут хорошо, но это действительно помогло бы моим усилиям по отладке иметь возможность увидеть полный запрос.Я также раздражен, что это трудно, я должен видеть все это;Я знаю, что я должен что-то упустить.

--- РЕДАКТИРОВАТЬ ---

То, что я ищу, является эквивалентом this :

curl --trace-ascii debugdump.txt http://www.example.com/

, который, кажется, доступен с опцией CURLOPT_DEBUGFUNCTION в libcurl, но не реализован в php.Boo.

Ответы [ 2 ]

5 голосов
/ 13 июня 2012

Мне нужно было сделать именно это, но мне нужно было проверить связь с банком.

Крайне просто использовать Fiddler2, включить дешифрование трафика HTTPS и заставить cURL использовать Fiddler2 в качестве прокси дляотладка в этой ситуации:

$proxy = '127.0.0.1:8888';
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
2 голосов
/ 04 августа 2011

Вы отправляете multipart / formdata .Полагаю, cURL показывает заголовок HTTP полностью.«Проблема» в том, что multipart / formdata состоят из нескольких частей.Это выходит за рамки «заголовков HTTP первого уровня» и является частью тела «основного тела HTTP».

Я не знаю вашу среду, но вы также можете отлаживать с помощью мониторинга трафика TCP.Для этого вы можете использовать Wireshark или tcpdump - Wireshark также может отображать файлы дампа, созданные tcpdump.

...