Quiero ver los encabezados de solicitud realizados por curl
cuando envío una solicitud al servidor. ¿Cómo puedo verificar eso?¿Cómo puedo ver los encabezados de solicitud realizados por curl al enviar una solicitud al servidor?
Respuesta
La opción --trace-ascii
de curl mostrará los encabezados de solicitud, así como los encabezados de respuesta y el cuerpo de la respuesta.
Por ejemplo, el comando
curl --trace-ascii curl.trace http://www.google.com/
produce un archivo curl.trace
que comienza como sigue:
== 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:
También obtuvo una respuesta (una respuesta 302, para ser precisos pero irrelevante) que era registrado.
Si sólo desea guardar la respuesta cabeceras, utilice la opción --dump-header
:
curl -D file url
curl --dump-header file url
Si necesita más información sobre las opciones disponibles, utilice curl --help | less
(que produce un par de cientos de líneas de salida pero menciona muchas opciones). O encuentre el manual page donde hay más explicación de lo que significan las opciones.
-D le da los encabezados _response_ (como lo hace -I, pero a STDIN). La pregunta solicitó los encabezados _request_. – pr1001
Buen punto ... y la opción --trace-ascii hace el trabajo. –
rizo --trace-ascii {nombre del archivo} o utilizar un único guión en lugar del nombre del archivo conseguirlo envía a la salida estándar:
curl --trace-ascii - {URL}
CURLOPT_DEBUGFUNCTION si está usando libcurl
Esto le muestra todo lo rizo envía y recibe, con algo de información adicional.
Esto es muy detallado, pero ciertamente te muestra todo lo que debes saber. – tripleee
La única manera me las arreglé para ver mis encabezados salientes (Curl con php) estaba usando las siguientes opciones:
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
conseguir su información de depuración:
$data = curl_exec($ch);
var_dump($data);
var_dump(curl_getinfo($ch));
Para mí, parecía ser el encabezado de respuesta no el encabezado saliente. – Toby
'var_dump $ data' devolverá los encabezados de respuesta y el cuerpo de la respuesta. El var_dump 'curl_getinfo ($ ch)' le dará los encabezados de solicitud. – Jrgns
'CURLOPT_HEADER' es el encabezado de respuesta -' CURLINFO_HEADER_OUT' es el encabezado de la solicitud. Esto es lo que el OP está pidiendo :) –
Creo curl -v
es la más fácil . Será escupir las cabeceras de petición (líneas con el prefijo '>') sin tener que escribir en un archivo:
$ 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
...
curl -v -D - stackoverflow.com -o/dev/null (para no mostrar todo el contenido del sitio, solo encabezados) –
'curl -Ivs http: // example.com>/dev/null': '-I' para una solicitud' HEAD', '-v' para mostrar los encabezados enviados,' -s' para ocultar la barra de progreso, '>/dev/null' para mostrar solo el -v salida, evitando la duplicación. – here
@PiotrekDe '-D -' estaba ordenado, pero no me fue útil ya que simplemente duplicaba los encabezados que' -v' ya mostraba. Si quiere que no estén prefijados para el consumo automático de la máquina, entonces tal vez sería mejor en ese caso, pero solo quería echar un vistazo a lo que era un problema con más detalle. – Pysis
Aquí es mi cliente HTTP en php para realizar consultas de correos con las galletas incluye:
function http_login_client($url, $params = "", $cookies_send = ""){
// Vars
$cookies = array();
$headers = getallheaders();
// Perform a http post request to $ur1 using $params
$ch = curl_init($url);
$options = array( CURLOPT_POST => 1,
CURLINFO_HEADER_OUT => true,
CURLOPT_POSTFIELDS => $params,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HEADER => 1,
CURLOPT_COOKIE => $cookies_send,
CURLOPT_USERAGENT => $headers['User-Agent']
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
// DEBUG info echo $ response; var_dump (curl_getinfo ($ ch)); ///
// 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
La pregunta no especificó si el comando línea de comandos denominada curl
estaba destinado o toda la biblioteca cURL.
El siguiente código PHP que utiliza la biblioteca cURL utiliza el primer parámetro como método HTTP (por ejemplo, "GET", "POST", "OPTIONS") y el segundo parámetro como URL. el uso
<?php
$ch = curl_init();
$f = tmpfile(); # will be automatically removed after fclose()
curl_setopt_array($ch, array(
CURLOPT_CUSTOMREQUEST => $argv[1],
CURLOPT_URL => $argv[2],
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => 0,
CURLOPT_VERBOSE => 1,
CURLOPT_HEADER => 0,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 30,
CURLOPT_STDERR => $f,
));
$response = curl_exec($ch);
fseek($f, 0);
echo fread($f, 32*1024); # output up to 32 KB cURL verbose log
fclose($f);
curl_close($ch);
echo $response;
Ejemplo:
php curl-test.php OPTIONS https://google.com
Tenga en cuenta que los resultados son casi idénticos a siguiente línea de comandos
curl -v -s -o - -X OPTIONS https://google.com
Esta es la mejor respuesta, porque el archivo utilizado en este método contiene todo en curl_getinfo() al que se hace referencia a continuación, junto con más detalles sobre la solicitud y la respuesta. –
¡Agradable! ¿Alguna forma de mejorar el código para mostrar los datos POST también? Es decir. eso agregado por curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ postData); –
Esto no tiene sentido. 'CURLOPT_STDERR' hace curl write ** errors ** en la secuencia' $ f', no los datos de solicitud. Y es por eso que no funcionó para mí. A menos que me esté perdiendo algo importante? –
volcar los encabezados en un archivo y la carga útil de la respuesta en una archivo diferente
curl -k -v -u user:pass "url" --trace-ascii headers.txt >> response.txt
curl -s -v -o/dev/null -H "Testheader: test" http://www.example.com
También puede usar la opción -I
si desea enviar una solicitud HEAD y no una solicitud GET.
Realice una solicitud de muestra a https://http-tools.appspot.com/reflect-http-request/some-unique-id y compruebe lo que contiene esta solicitud (encabezado de solicitud, cuerpo de solicitud, parámetros de solicitud) por su correspondiente URL de buscador https://http-tools.appspot.com/reflect-http-request-finder/some-unique-id. Puede utilizar cualquier cadena en lugar de some-unique-id
, consulte https://http-tools.appspot.com para obtener más información.
probé las respuestas aquí y nos pareció que el más útil y más fácil no aparece como una respuesta todavía, pero es:
curl -v https://example.com/path
Esto muestra la SOLICITUD cabeceras, así como la RESPONSE encabezados más otros útiles como el certificado SSL y si se reutilizó una conexión TCP existente. la bandera -v
se puede combinar con otras banderas, por supuesto, tal que sigue las redirecciones y rápido para la autenticación HTTP:
curl -vL --user my_username https://example.com/path
Espero que esto ayude.
aparece en el lugar más alto – Trix
Se puede ver mediante el uso de -iv
$> curl -ivH "apikey:ad9ff3d36888957" --form "[email protected]/home/mar/workspace/images/8.jpg" --form "language=eng" --form "isOverlayRequired=true" https://api.ocr.space/Parse/Image
Sé que esto es un poco tarde, pero mi método favorito para hacer esto es netcat
, tal como se obtiene exactamente lo envió curl
; esto puede diferir de las opciones --trace
o --trace-ascii
que no mostrarán los caracteres no ASCII correctamente (solo se muestran como puntos o deben decodificarse).
Usted puede hacer esto muy fácilmente mediante la apertura de dos ventanas de terminal, en el primer tipo:
nc -l localhost 12345
Esto abre un proceso de escucha en el puerto 12345 de la máquina local.
En la segunda ventana de terminal introduzca su comando curl, por ejemplo:
curl --form 'foo=bar' localhost:12345
En la primera ventana de terminal verá exactamente lo rizo enviado en la solicitud.
Ahora, por supuesto, nc
no enviará nada en respuesta (a menos que lo escriba en usted mismo), por lo que deberá interrumpir el comando curl (control-c) y repetir el proceso para cada prueba.
Sin embargo, esta es una opción útil para simplemente depurar su solicitud, ya que no implica un viaje de ida y vuelta a ninguna parte, o producir solicitudes falsas e iterativas en alguna parte hasta que lo haga bien; una vez que esté satisfecho con el comando, simplemente redirigirlo a una URL válida y listo.
Puede hacer lo mismo para cualquier biblioteca cURL, simplemente edite su solicitud para apuntar al oyente local nc
hasta que esté satisfecho con ella.
- 1. ¿Puedo hacer una solicitud de CURL al mismo servidor?
- 2. cómo cancelar la solicitud json al enviar una nueva solicitud json al servidor
- 3. Ver encabezados de solicitud de cURL con datos de POST
- 4. Cómo enviar una solicitud a la solicitud HTTP POST al servidor
- 5. eliminar nueva línea al enviar solicitud al servidor a través de Ajax Post con JQuery
- 6. ¿Cómo puedo enviar un archivo en una solicitud POST?
- 7. Cómo ver los encabezados enviados por HttpWebRequest
- 8. ¿Los encabezados de solicitud REST están encriptados por SSL?
- 9. ¿Puedo enviar una solicitud GET con cookies en los encabezados en Nodo?
- 10. ¿Enviar una solicitud SOAP, por dónde empezar?
- 11. Comando curl para emitir una solicitud POST
- 12. Rack :: Solicitud: ¿cómo obtengo todos los encabezados?
- 13. Django devuelve el error 403 al enviar una solicitud POST
- 14. ¿Cómo puedo enviar datos JSON al servidor
- 15. accediendo a los encabezados de solicitud en django/python
- 16. ¿Cómo enviar por programación una solicitud HTTP con parámetros?
- 17. CURL Solicitud de problema
- 18. ¿Cómo duplicar una solicitud usando wget (o curl) con encabezados sin procesar?
- 19. Ver solicitud cfhttp
- 20. telnet enviar una solicitud HTTP
- 21. ¿Cómo hacer una solicitud de cUrl sin recibir la respuesta?
- 22. Enviar solicitud HTTP de iPhone al servidor web PHP de Apache
- 23. springframework obtener todos los encabezados de solicitud
- 24. ¿Cómo enviar una solicitud HTTP en Java?
- 25. Agregar encabezados a una solicitud en rieles
- 26. ¿Cómo puedo ver el contenido de una solicitud de MultipartForm?
- 27. ¿Cómo enviar una solicitud POST usando django?
- 28. Enviar una solicitud DELETE HTTP
- 29. ¿Está enviando una solicitud HTTP que le dice al servidor que devuelva solo encabezados y sin cuerpo?
- 30. solicitud xml-rpc usando curl?
esta url puede ser útil. http://helloacm.com/curl/ –
Puede usar esto para probar http://run-node.com/now-use-curl-with-http-echo-com/ –