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.