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