HTTP - Parâmetros
Este capítulo irá listar alguns dos parâmetros importantes do protocolo HTTP e sua sintaxe na forma como são usados na comunicação. Por exemplo, formato para data, formato de URL, etc. Isso o ajudará a construir suas mensagens de solicitação e resposta ao escrever programas de cliente ou servidor HTTP. Você verá o uso completo desses parâmetros nos capítulos subsequentes enquanto aprende a estrutura da mensagem para solicitações e respostas HTTP.
Versão HTTP
HTTP usa um <major>.<minor>esquema de numeração para indicar versões do protocolo. A versão de uma mensagem HTTP é indicada por um campo HTTP-Version na primeira linha. Esta é a sintaxe geral para especificar o número da versão HTTP:
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
Exemplo
HTTP/1.0
or
HTTP/1.1
Identificadores Uniformes de Recursos
Identificadores Uniformes de Recursos (URI) são simplesmente formatados e não diferenciam maiúsculas de minúsculas contendo nome, localização, etc. para identificar um recurso, por exemplo, um site, um serviço da web, etc. Uma sintaxe geral de URI usada para HTTP é a seguinte:
URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
Aqui se o port está vazio ou não fornecido, a porta 80 é assumida para HTTP e um vazio abs_path é equivalente a um abs_pathdo "/". Os outros personagens além daqueles noreserved e unsafe conjuntos são equivalentes à sua codificação ""% "HEX HEX".
Exemplo
Os três URIs a seguir são equivalentes:
http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html
Formatos de data / hora
Todos os carimbos de data / hora HTTP DEVEM ser representados no horário de Greenwich (GMT), sem exceção. Os aplicativos HTTP têm permissão para usar qualquer uma das três representações a seguir de carimbos de data / 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 conjuntos de caracteres para especificar os conjuntos de caracteres que o cliente prefere. Vários conjuntos de caracteres podem ser listados separados por vírgulas. Se um valor não for especificado, o padrão será US-ASCII.
Exemplo
A seguir estão os conjuntos de caracteres válidos:
US-ASCII
or
ISO-8859-1
or
ISO-8859-7
Codificações de conteúdo
Um valor de codificação de conteúdo indica que um algoritmo de codificação foi usado para codificar o conteúdo antes de transmiti-lo pela rede. A codificação de conteúdo é usada principalmente para permitir que um documento seja compactado ou de outra forma transformado de forma útil sem perder a identidade.
Todos os valores de codificação de conteúdo não diferenciam maiúsculas de minúsculas. O HTTP / 1.1 usa valores de codificação de conteúdo nos campos de cabeçalho Accept-Encoding e Content-Encoding, que veremos nos capítulos subsequentes.
Exemplo
A seguir estão os esquemas de codificação válidos:
Accept-encoding: gzip
or
Accept-encoding: compress
or
Accept-encoding: deflate
Tipos de mídia
HTTP usa tipos de mídia da Internet no Content-Type e Acceptcampos de cabeçalho para fornecer digitação de dados aberta e extensível e negociação de tipo. Todos os valores de tipo de mídia são registrados na Internet Assigned Number Authority (IANA). A sintaxe geral para especificar o tipo de mídia é a seguinte:
media-type = type "/" subtype *( ";" parameter )
Os nomes de atributo de tipo, subtipo e parâmetro não diferenciam maiúsculas de minúsculas.
Exemplo
Accept: image/gif
Tags de linguagem
HTTP usa tags de idioma dentro do Accept-Language e Content-LanguageCampos. Uma tag de idioma é composta por uma ou mais partes: uma tag de idioma principal e uma série possivelmente vazia de subtags:
language-tag = primary-tag *( "-" subtag )
Espaços em branco não são permitidos na tag e todas as tags não fazem distinção entre maiúsculas e minúsculas.
Exemplo
Tags de exemplo incluem:
en, en-US, en-cockney, i-cherokee, x-pig-latin
onde qualquer marca primária de duas letras é uma abreviatura de idioma ISO-639 e qualquer subetiqueta inicial de duas letras é um código de país ISO-3166.