Gli header HTTP

Gli header HTTP vengono trasferiti fra client e server e generalmente contengono meta-informazioni sul contenuto effettivo della risorsa (file) trasferita.
Il loro formato :
NomeHeader: Valore (CRLF)
in una richiesta o una risposta HTTP possono esistere un numero arbitrario di header, il loro ordine non importante ma raccomandato un ordine sulla base delle categorie sotto indicate.

Esistono 4 categorie di header, di queste citiamo solo le voci pi significative:

1 - GENERAL HEADERS
Contengono informazioni generali non relative al server, al client, al dato trasferito o al protocollo HTTP.
Cache-Control: direttive - Definisce le direttive sia associate a richieste che a risposte (separate da virgola) a cui devono obbedire tutti i sistemi di caching fra client e server. Quando sul proprio browser si cambiano le impostazioni relative alla cache, di fatto si modificano le direttive gestite con questo header.
Date: data_rfc-1123 - (es: Wed, 23 Oct 2002 18:59:12 GMT) La data quella in cui il messaggio viene originato.
Pragma: no-cache - Il contenuto richiesto non deve essere messo in alcuna cache (del browser, di un proxy ecc.). Fondamentale per pagine dinamiche che devono essere sempre aggiornate.
Via: protocollo host_ricevente [commento] - Va aggiunto da proxy o gateway per indicare i protocolli e gli host intermedi fra client e server attraverso i quali passata la richiesta.
Upgrade: protocollo/versione - Permette al client di specificare che supporta una versione di protocollo superiore a quella che si sta utilizzando (tipicamente HTTP/1.1 rispetto a HTTP/1.0) e al server di indicare su quale protocollo ha switchato.

2 - REQUEST HEADERS
Sono riservati alla richieste che il client esegue e contengono informazioni riguardo la richiesta stessa o il client.
Accept: tipo/sottotipo [;q=valore] - Indica quali tipi di file sono accettati dal client, in formato MIME (es: text/html). Con il parametro q (valori da 0 a 1) si definisce la preferenza relativa al tipo indicato (es: Accept: text/plain; q=0.5, text/html; q=0.8).
Accept-Charset: charset [;q=valore] - Indica i charset (set di caratteri per le diverse lingue) il client accetta e in che ordine.
Accept-Encoding: encoding-type [;q=valore] - Indica il tipo di encoding che il client pu accettare (es: Accept-Encoding: gzip, default, compress;q=0.9).
Accept-Language: lingua [;q=valore] - Indica la lingua che il client preferisce e quali pu comunque accettare (es: Accept-Language: en-us, en;q=0.5).
Authorization: credenziali - Quando l'utente si autenticato e accede a pagine protette, il client con questo header fornisce le credenziali richeste ed evita ultetiori richieste di autenticazione da sottoporre all'utente.

3 - RESPONSE HEADERS
Sono riservati alle risposte del server e contengono info sul server stesso o sulla risorsa richiesta. Fra questi:
Age: secondi - Tempo stimato da quando stata generata la risposta sul server.
Server string - Contiene informazioni sulla versione del software utilizzata dal server

4 -ENTITY HEADERS
Contengono meta-informazioni sull'entit (file) trasferito.
Content-Encoding: encoding - Indica quali tipi di encoding (es: gzip) sono stati fatte sul contenuto del messaggio, per permettere al client di decodificarlo.
Content-Language: lingue - Indica la lingua presunta dell'utente che riceve il file, si basa sull'analogo Request header Accept-Languages.
Content-Lenght: bytes - Indica la lunghezza in byte del file servito.
Expires: data - Indica la data dopo la quale il file servito da considerare obsoleto. Va considerata da tutti i meccanismi di cache coinvolti nella richiesta.
Last-Modified: data - Indica la data di ultima modifica del file.

Privacy Policy