7.2.1.2. Métodos¶
HTTP tiene un buen puñado de métodos y no es propósito de este epígrafe glosarlos todos. La sintaxis de la línea que expresa el método de petición es la siguiente:
MÉTODO RECURSO HTTP/VERSIÓN
Una primera serie de métodos son los siguientes:
- GET
Pide al servidor un recurso. Por ejemplo:
GET /images/diagrama.png HTTP/1.1
que pretende obtener del servidor un recurso llamado
diagrama.png
dentro del directorio/images
.El método no permite enviar un cuerpo en la petición, por lo que si se desean enviar datos se integran en la URL como parámetros:
GET /form.php?nombre=Juan&edad=25
- HEAD
Funciona como GET, pero en la respuesta el servidor sólo envía las cabeceras y no el cuerpo con el recurso. Es útil cuando se desean consultar sólo los metadatos. Ejemplo:
HEAD /images/diagrama.png HTTP/1.1
- POST
Pide un recurso enviando datos al servidor en el cuerpo de la petición. Por ejemplo:
POST /form.php Host: www.example.net ... Otras cabeceras ... nombre=Juan&edad=25
- CONNECT
Este método permite el establecimiento de túneles HTTP, de manera que se establece una conexión HTTP entre el cliente y el proxy, y una vez establecida, el proxy permite una comunicación TCP entre el cliente y un servidor final[1]. en la que se limita a hacer pasar el tráfico a través de él sin modificiación alguna.
Nota
Este método es el que se suele usar para establecer comunicaciones HTTPs, mediando un proxy HTTP: el cliente establece una conexión CONNECT con el proxy:
CONNECT www.example.com:443 HTTP/1.1
lo que originará que el proxy abra una conexión al puerto 443 con el servidor final y retransmita byte a byte lo que le envía el cliente, que es una comunicación HTTPs que, al estar cifrada, es incapaz de entender.
Ver también
Lea esta respuesta de overflow, que es muy elocuente.
- OPTIONS
Informa de los métodos que soporta el servidor web:
$ telnet www.example.net 80 OPTIONS / HTTP/1.1 Host: www.example.net HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Tue, 22 Oct 2016 09:10:20 GMT Connection: close Allow: GET, HEAD, POST, TRACE, OPTIONS Content-Length: 0
No todos los servidores pueden aceptarlos o permitirlos.
- TRACE
Es un método de «ping»: devuelve como respuesta los campos de cabecera que recibe el servidor. Por tanto, recibiremos los mismos campos que enviamos más los que hayan podido añadir los proxies intermedios:
$ telnet www.example.net 80 TRACE / HTTP/1.1 Host: www.example.net HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Tue, 22 Oct 2016 09:10:20 GMT Connection: close Content-Type: message/http Content-Length: 40 TRACE / HTTP/1.1 Host: www.example.net
Nota
Lo habitual es que los servidores web no soporten o no permitan estos dos últimos métodos, por proporcionar información a los atacantes.
Además de los métodos anteriores, HTTP define otra serie de métodos relacionados con WebDAV para hacer de la WWW no sólo un medio legible, sino también editable. Por ello, son métodos que permiten modificar directamente los recursos del servidor: PUT (subir ficheros), MKCOL (crear directorios), DELETE (borrar ficheros), PROPFIND (ver el contenido de directorios), etc. Son métodos, por tanto, que permitirían añadir al servidor web funcionalidades de servidor FTP.
Nota
A partir de HTTP/1.1 es legal enviar en la línea de petición la URL completa y no sólo la dirección al recurso. Por tanto, esto es perfectamente posible:
GET http://www.example.net/images/diagrama.png HTTP/1.1
Notas al pie