HTTP: parámetros

Este capítulo enumerará algunos de los parámetros importantes del protocolo HTTP y su sintaxis y la forma en que se utilizan en la comunicación. Por ejemplo, formato de fecha, formato de URL, etc. Esto le ayudará a construir sus mensajes de solicitud y respuesta mientras escribe programas de servidor o cliente HTTP. Verá el uso completo de estos parámetros en los capítulos siguientes mientras aprende la estructura del mensaje para solicitudes y respuestas HTTP.

Versión HTTP

HTTP usa un <major>.<minor>esquema de numeración para indicar versiones del protocolo. La versión de un mensaje HTTP se indica mediante un campo HTTP-Version en la primera línea. Aquí está la sintaxis general para especificar el número de versión HTTP:

HTTP-Version   = "HTTP" "/" 1*DIGIT "." 1*DIGIT

Ejemplo

HTTP/1.0

or

HTTP/1.1

Identificadores uniformes de recursos

Los identificadores uniformes de recursos (URI) tienen un formato simple, una cadena que no distingue entre mayúsculas y minúsculas que contiene el nombre, la ubicación, etc. para identificar un recurso, por ejemplo, un sitio web, un servicio web, etc. Una sintaxis general de URI utilizada para HTTP es la siguiente:

URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

Aquí si el port está vacío o no se proporciona, el puerto 80 se supone para HTTP y un vacío abs_path es equivalente a un abs_pathde "/". Los personajes distintos a los delreserved y unsafe los conjuntos son equivalentes a su codificación ""% "HEX HEX".

Ejemplo

Los siguientes tres URI son equivalentes:

http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html

Formatos de fecha / hora

Todas las marcas de fecha / hora HTTP DEBEN estar representadas en la hora media de Greenwich (GMT), sin excepción. Las aplicaciones HTTP pueden utilizar cualquiera de las siguientes tres representaciones de marcas de fecha / hora:

Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format

Conjuntos de caracteres

Usamos juegos de caracteres para especificar los juegos de caracteres que prefiere el cliente. Se pueden enumerar varios juegos de caracteres separados por comas. Si no se especifica un valor, el valor predeterminado es US-ASCII.

Ejemplo

Los siguientes son los conjuntos de caracteres válidos:

US-ASCII

or

ISO-8859-1

or 

ISO-8859-7

Codificaciones de contenido

Un valor de codificación de contenido indica que se ha utilizado un algoritmo de codificación para codificar el contenido antes de pasarlo por la red. La codificación de contenido se usa principalmente para permitir que un documento se comprima o se transforme de manera útil sin perder la identidad.

Todos los valores de codificación de contenido no distinguen entre mayúsculas y minúsculas. HTTP / 1.1 utiliza valores de codificación de contenido en los campos de encabezado Accept-Encoding y Content-Encoding que veremos en los capítulos siguientes.

Ejemplo

Los siguientes son los esquemas de codificación válidos:

Accept-encoding: gzip

or

Accept-encoding: compress

or 

Accept-encoding: deflate

Tipos de medios

HTTP utiliza tipos de medios de Internet en el Content-Type y Acceptcampos de encabezado para proporcionar escritura de datos abierta y extensible y negociación de tipos. Todos los valores de tipo de medio se registran con la Autoridad de números asignados de Internet (IANA). La sintaxis general para especificar el tipo de medio es la siguiente:

media-type     = type "/" subtype *( ";" parameter )

Los nombres de atributo de tipo, subtipo y parámetro no distinguen entre mayúsculas y minúsculas.

Ejemplo

Accept: image/gif

Etiquetas de idioma

HTTP utiliza etiquetas de idioma dentro del Accept-Language y Content-Languagecampos. Una etiqueta de idioma se compone de una o más partes: una etiqueta de idioma principal y una serie posiblemente vacía de subetiquetas:

language-tag  = primary-tag *( "-" subtag )

No se permiten espacios en blanco dentro de la etiqueta y todas las etiquetas no distinguen entre mayúsculas y minúsculas.

Ejemplo

Las etiquetas de ejemplo incluyen:

en, en-US, en-cockney, i-cherokee, x-pig-latin

donde cualquier etiqueta principal de dos letras es una abreviatura de idioma ISO-639 y cualquier subetiqueta inicial de dos letras es un código de país ISO-3166.