HTTP - Parametri

Questo capitolo elencherà alcuni dei parametri importanti del protocollo HTTP e la loro sintassi nel modo in cui vengono utilizzati nella comunicazione. Ad esempio, formato per la data, formato dell'URL, ecc. Questo ti aiuterà a costruire i tuoi messaggi di richiesta e risposta durante la scrittura di programmi client o server HTTP. Vedrai l'utilizzo completo di questi parametri nei capitoli successivi mentre apprendi la struttura dei messaggi per le richieste e le risposte HTTP.

Versione HTTP

HTTP utilizza un file <major>.<minor>schema di numerazione per indicare le versioni del protocollo. La versione di un messaggio HTTP è indicata da un campo HTTP-Version nella prima riga. Ecco la sintassi generale per specificare il numero di versione HTTP:

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

Esempio

HTTP/1.0

or

HTTP/1.1

Identificatori di risorse uniformi

Gli Uniform Resource Identifiers (URI) sono semplicemente una stringa formattata, senza distinzione tra maiuscole e minuscole contenente nome, posizione, ecc. Per identificare una risorsa, ad esempio un sito Web, un servizio Web, ecc. Una sintassi generale dell'URI utilizzata per HTTP è la seguente:

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

Qui se il file port è vuoto o non è specificato, si presume che la porta 80 per HTTP e vuota abs_path è equivalente a un abs_pathdi "/". I personaggi diversi da quelli inreserved e unsafe i set sono equivalenti alla loro codifica ""% "HEX HEX".

Esempio

I tre URI seguenti sono equivalenti:

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

Formati data / ora

Tutti i timestamp di data / ora HTTP DEVONO essere rappresentati in Greenwich Mean Time (GMT), senza eccezioni. Le applicazioni HTTP possono utilizzare una delle seguenti tre rappresentazioni di data / ora:

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

Set di caratteri

Usiamo set di caratteri per specificare i set di caratteri che il cliente preferisce. È possibile elencare più set di caratteri separati da virgole. Se non viene specificato un valore, il valore predefinito è US-ASCII.

Esempio

Di seguito sono riportati i set di caratteri validi:

US-ASCII

or

ISO-8859-1

or 

ISO-8859-7

Codifiche dei contenuti

Un valore di codifica del contenuto indica che è stato utilizzato un algoritmo di codifica per codificare il contenuto prima di trasmetterlo alla rete. La codifica del contenuto viene utilizzata principalmente per consentire a un documento di essere compresso o altrimenti trasformato in modo utile senza perdere l'identità.

Tutti i valori di codifica del contenuto non fanno distinzione tra maiuscole e minuscole. HTTP / 1.1 utilizza valori di codifica del contenuto nei campi di intestazione Accept-Encoding e Content-Encoding che vedremo nei capitoli successivi.

Esempio

Di seguito sono riportati gli schemi di codifica validi:

Accept-encoding: gzip

or

Accept-encoding: compress

or 

Accept-encoding: deflate

Tipi di media

HTTP utilizza i tipi di media Internet in Content-Type e Acceptcampi di intestazione per fornire una digitazione dei dati aperta ed estensibile e la negoziazione del tipo. Tutti i valori del tipo di supporto vengono registrati con IANA (Internet Assigned Number Authority). La sintassi generale per specificare il tipo di supporto è la seguente:

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

I nomi degli attributi di tipo, sottotipo e parametro non fanno distinzione tra maiuscole e minuscole.

Esempio

Accept: image/gif

Tag della lingua

HTTP utilizza tag di lingua all'interno di Accept-Language e Content-Languagecampi. Un tag della lingua è composto da una o più parti: un tag della lingua principale e una serie di sottotag possibilmente vuota:

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

Gli spazi bianchi non sono consentiti all'interno del tag e tutti i tag non fanno distinzione tra maiuscole e minuscole.

Esempio

I tag di esempio includono:

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

dove qualsiasi tag principale di due lettere è un'abbreviazione della lingua ISO-639 e qualsiasi tag secondario iniziale di due lettere è un codice paese ISO-3166.