cerca
HTTP Headers
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

HTTP Headers

Torna alla pagina di Sistemi per l'elaborazione delle informazioni


 :: HTTP Headers ::

In una comunicazione HTTP tra client e server vengono normalmente inviati alcuni header, sia nei messaggi di richiesta che in quelli di risposta. Vediamo quali sono.


HTTP request

Da considerare che la maggior parte degli header sottostanti sono assolutamente facoltativi.

  • Accept: tipo/sottotipo [;q=valore]
    Indica i tipi di file accettati dal client, specificandoli nel formato MIME. In particolare, se il client è in grado di accettare tutti i tipi, può scrivere semplicemente */*. Il parametro q è opzionale ed esprime in percentuale (quindi con valori compresi tra 0 e 1) la preferenza da associare ai vari tipi.
    Esempi: Accept: text/plain image/gif - Accept: text/plain; q=0.5, text/html; q=0.8
  • Accept-Charset: charset [;q=valore]
    Indica l'insieme di caratteri (charset) che il client può accettare. Il parametro q funziona nello stesso modo visto sopra.
    Esempio: Accept-Charset: iso-8859-5, unicode-1-1
  • Accept-Encoding: encoding-type [;q=valore]
    Indica il tipo di compressioni (encoding) che il client può accettare.
    Esempio: Accept-Encoding: gzip, default
  • Accept-Language: lingua [;q=valore]
    Indica la lingua che il client può accettare o preferisce ricevere.
    Esempio: Accept-Language: it, en
  • Authorization: credenziali
    Quando l'utente si è autenticato e accede a pagine protette, il client con questo header fornisce le credenziali richeste ed evita ulteriori richieste di autenticazione da sottoporre all'utente. Nelle specifiche HTTP/1.0 esiste uno schema di autorizzazione BASIC, in cui i parametri username e password sono passati in questo modo username:password, e quindi codificati in base 64.
    Esempio: Authorization: BASIC ceravolo:pigiamino
  • Connection: opzioni
    Indica il tipo di connessione utilizzata dal client. Se è impostata a close, significa che né il client né il server vorranno comunicare ancora dopo questa transazione; viceversa se gli viene dato valore keep-alive. I valori di default sono close per HTTP/1.0 e keep-alive per HTTP/1.1.
    Esempio: Connection: close - Connection: keep-alive
  • Cookie: nome=valore
    Indica i valori di eventuali cookie inviati dal server nelle precedenti comunicazioni con il client.
    Esempio: Cookie: livello=25
  • Expect: ???
    Indica il particolare tipo di comportamento del server che è stato richiesto dal client.
    Esempio: ??? (rif: http://tools.ietf.org/html/rfc2616#section-14.20)
  • From: mailbox
    Indica l'indirizzo e-mail dell'utente che ha generato la richiesta dall'user agent del client.
    Esempio: From: webmaster@w3.org
  • Host: hostname porta
    Indica il nome ed il numero di porta del server che il client vuole contattare.
    Esempio: Host: www.pecorina.com 90
  • If-Modified-Since: HTTP-date
    Pone una condizione sull'invio della risorsa richiesta al server: se tale richiesta non ha subito alcuna modifica dalla data passata come parametro dell'header, allora non viene ritornata dal server. Cancellare quest'intestazione forzerà il server ad inviare una pagina anche se questa si trova nella cache del browser.
    Esempio: If-Modified-Since: Mon, 21 Jan 2008 16:50:31 GMT
  • Proxy-Authorization: credenziali
    Permette al client di identificare sé stesso (o l'utente) presso un proxy che richiede un'autenticazione. Le credenziali contengono le informazioni riguardanti le autorizzazioni dell'utente e dell'user-agent registrate presso il proxy.
  • Proxy-Connection: opzioni
    Si presume che indichi il tipo di connessione utilizzata dal client. In realtà non è definita nel protocollo ma pare sia un hack introdotto da Netscape. Dovrebbe funzionare come l'header Connection, quindi se è impostata a close significa che né il client né il proxy-server vorranno comunicare ancora dopo questa transazione; viceversa se gli viene dato valore keep-alive.
  • Range: parametri
    Indica una serie di operazioni che è possibile compiere su gruppetti di byte (byte-range per gli amici). Non tutti i client e i server supportano però tali operazioni.
    Vediamo attraverso degli esempi alcuni possibili parametri, ipotizzando che la dimensione completa del messaggio sia di 10000 bytes:
    • "voglio i primi 1000 bytes"
      Range: bytes=0-999
    • "voglio gli ultimi 2000 bytes"
      Range: bytes=-2000
    • "voglio i bytes dal 2000 al 3000 (estremi compresi)"
      Range: bytes=2000-3000
    • "voglio solo il primo e l'ultimo byte"
      Range: bytes=0-0,-1
  • Referer: url
    Indica la url della pagina web cui si fa riferimento.
    Esempio: Referer: http://doppioclic.altervista.org/wiki/
  • User-agent: nome user agent
    Indica il programma client che ha originato la richiesta HTTP (ad esempio, un browser).
    Esempio: User-Agent: Mozilla 5.0

Torna su

HTTP response

Come per le request, anche in questo caso alcuni header possono essere facoltativi.

  • Accept-Ranges: range accettato
    Indica il tipo di range supportato dal server per una risorsa. Quello più comune è il range di byte, ma è anche possibile che non ne sia supportato alcuno, e quindi il parametro avrà valore "none".
    Esempio: Accept-Ranges: bytes - Accept-Ranges: none
  • Age: secondi
    Indica il tempo stimato da quando è stata generata la risposta sul server, espresso in secondi.
    Esempio: Age: 2
  • Cache-Control: direttive
    Influisce sul modo in cui le pagine sono conservate nella cache dell'user-agent del client. Tra le direttive che posso passare come parametro ho: "public" (le risorse vanno conservate), "private" (le risorse non vanne conservate), "no-cache" (sa il cazzo), "no-store" (mah), "max-age" (dà un'indicazione sul tempo di conservazione), bla bla.
  • Content-Encoding: encoding-type
    Il tipo di codifica fatta sul contenuto del messaggio, inviata per consentire al client di decodificarlo.
    Esempio: Content-Encoding: gzip
  • Content-Language: lingua
    Il linguaggio utilizzato.
    Esempio: Content-Language: it
  • Content-Length: lunghezza
    La lunghezza della risorsa trasmessa, espressa in bytes.
    Esempio: Content-Length: 348
  • Content-Location: indirizzo
    Indica l'indirizzo URI di provenienza dei documenti.
    Esempio: Content-Location: /index.htm
  • Content-Range: range
    Nel caso in cui un messaggio venisse trasmesso in parti, indica dove è collocato un particolare messaggio parziali all'interno di quello completo.
    Esempio: Content-Range: bytes 500-1001/1001
  • Content-Type: tipo
    Indica i tipi di file inviati dal server, specificandoli nel formato MIME, e l'eventuale charset correlato.
    Esempio: Content-Type: text/html; charset=utf-8
  • Data: data
    Indica la data e l'ora in cui è stato inviato il messaggio dal server.
    Esempio: Date: Tue, 20 Jan 1955 12:01:31 GMT
  • ETag: entity tag
    Indica il tipo di firma di una pagina (se la pagina cambia, cambia la firma).
    Esempio: ETag: "spruzzoMerdaDaTuttiIpori"
  • 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.
    Esempio: Expires: Tue, 06 Jun 2666 06:60:60 GMT
  • Last-Modified: data
    Indica la data dell'ultima modifica dell'oggetto richiesto.
    Esempio: Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
  • Location: indirizzo
    Campo utilizzato dai reindirizzatori di URL, per indicare al navigatore il nuovo indirizzo dove andare cercare la pagina.
    Esempio: Location: http://www.tettone.com ("confermiamo l'esistenza del sito" ndAutori)
  • Proxy-Authenticate: ???
    Indica lo schema e i parametri di autenticazione applicabili al proxy per la richiesta di una determinata URI. Questo header deve essere obbligatoriamente incluso come parte della risposta 407 (Proxy Authentication Required).
    Esempio: ??? (rif: http://tools.ietf.org/html/rfc2616#section-14.9)
  • Server: nome server
    Indica il nome e la versione del web server. Puramente informativo.
    Esempio: Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
  • Set-cookie: parametri
    Ordina all'user-agent del client di conservare le informazioni contenute nei cookies e di rinviarle al server in occasione di un nuovo collegamento. I parametri possono essere di diverso tipo, ad esempio nomi, date, indirizzi, ecc.
    Esempio: Set-Cookie: ACQUIRENTE=Damiani; OGGETTO=Esame; expires=Tue, 23 Jan 2008 10:00:00 GMT
  • WWW-Authenticate: ???
    Indica almeno uno schema e/o parametri di autenticazione da applicare per la richiesta di una determinata URI, in caso di messaggio di risposta 401 (Unauthorized, ovvero autenticazione possibile ma fallita o che non può essere fornita).
    Esempio: ??? (rif: http://tools.ietf.org/html/rfc2616#section-14.47)

Torna su


Torna alla pagina di Sistemi per l'elaborazione delle informazioni