HTTP headers 

HTTP headers
25 Luglio 2009 HTTP
   



I campi dello header delle richieste e delle risposte HTTP sono descritti nella sezione 14 della RFC 2616.

Richiesta (Requests)


Accept

Indica il tipo di contenuto che può essere accettato in risposta. Indica che la richiesta è limitata ad alcuni specifici tipi di risorsa.
Esempio: Accept: text/plain

  1. Accept = "Accept" ":"
  2. #( media-range [ accept-params ] )
  3.  
  4. media-range = ( "*/*"
  5. | ( type "/" "*" )
  6. | ( type "/" subtype )
  7. ) *( ";" parameter )
  8.  
  9. accept-params = ";" "q" "=" qvalue *( accept-extension )
  10. accept-extension = ";" token [ "=" ( token | quoted-string ) ]

Accept-Charset

Indica quale set di caratteri può essere accettato in risposta.
Esempio: iso-8859-5, unicode-1-1;q=0.8

  1. Accept-Charset = "Accept-Charset" ":"
  2. 1#( ( charset | "*" )[ ";" "q" "=" qvalue ] )

 

Accept-Encoding

Simile al campo Accept. Specifica i tipi di compressione accettati dal client.
Esempio: Accept-Encoding: compress, gzip

  1. Accept-Encoding = "Accept-Encoding" ":"
  2. 1#( codings [ ";" "q" "=" qvalue ] )
  3. codings = ( content-coding | "*" )

Accept-Language

Simile al campo Accept indica la lingua preferita per la risposta.
Esempio: Accept-Language: it

  1. Accept-Language = "Accept-Language" ":"
  2. 1#( language-range [ ";" "q" "=" qvalue ] )
  3. language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )

Accept-Ranges

Consente al server di indicare il tipo di range che può accettare (bytes o none).
Esempio: Accept-Ranges: bytes

  1. Accept-Ranges = "Accept-Ranges" ":" acceptable-ranges
  2. acceptable-ranges = 1#range-unit | "none"

Authorization

Il client invia le sue credenziali al server dopo aver ricevuto una risposta con codice HTTP 401 in questo campo.
Esempio: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

  1. Authorization = "Authorization" ":" credentials

Cache-Control

Campo usato per specificare le direttive che devono essere osservate da tutti i meccanismi di caching lungo la catena richiesta/risposta.
Esempio: Cache-Control: no-cache

  1. Cache-Control = "Cache-Control" ":" 1#cache-directive
  2. cache-directive = cache-request-directive
  3. | cache-response-directive
  4. cache-request-directive =
  5. "no-cache"
  6. | "no-store"
  7. | "max-age" "=" delta-seconds
  8. | "max-stale" [ "=" delta-seconds ]
  9. | "min-fresh" "=" delta-seconds
  10. | "no-transform"
  11. | "only-if-cached"
  12. | cache-extension
  13. cache-response-directive =
  14. "public"
  15. | "private" [ "=" <"> 1#field-name <"> ]
  16. | "no-cache" [ "=" <"> 1#field-name <"> ]
  17. | "no-store"
  18. | "no-transform"
  19. | "must-revalidate"
  20. | "proxy-revalidate"
  21. | "max-age" "=" delta-seconds
  22. | "s-maxage" "=" delta-seconds
  23. | cache-extension
  24. cache-extension = token [ "=" ( token | quoted-string ) ]

Connection

Consente di specificare le opzioni per questa particolare connessione.
Connection: Keep Alive -> Connessione da tenere attiva anche dopo la risposta
Connection: Close -> Connessione da chiudere dopo la risposta
Esempio: Connection: close

  1. Connection = "Connection" ":" 1#(connection-token)
  2. connection-token = token

Content-Length

Indica la dimensione del corpo della richiesta espressa in byte.
Esempio: Content-Length: 3495

  1. Content-Length = "Content-Length" ":" 1*DIGIT

Content-Type

Indica il tipo del corpo della richiesta.
Esempio: Content-Type: text/html; charset=ISO-8859-4

  1. Content-Type = "Content-Type" ":" media-type

Date

Indica la data e l'ora in cui è stato creato il messaggio.
Esempio: Date: Tue, 15 Nov 1994 08:12:31 GMT

  1. Date = "Date" ":" HTTP-date

Expect

Indica che sono richiesti particolari comportamenti dal client.
Esempio: Expect: 100-continue

  1. Expect = "Expect" ":" 1#expectation
  2. expectation = "100-continue" | expectation-extension
  3. expectation-extension = token [ "=" ( token | quoted-string )
  4. *expect-params ]
  5. expect-params = ";" token [ "=" ( token | quoted-string ) ]

From

Indica l'indirizzo email dell'utente che ha fatto la richiesta.
Esempio: From: user@email.com

  1. From = "From" ":" mailbox

Host

Indica l'host ed il numero di porta della risorsa che viene richiesta.
Esempio: Host: www.w3.org

  1. Host = "Host" ":" host [ ":" port ]

If-Match

L'azione sarà eseguita solo se la entity tag fornita nella richiesta corrisponde con una delle entity tag del server.
Esempio: If-Match: "xyzzy"

  1. If-Match = "If-Match" ":" ( "*" | 1#entity-tag )

If-Modified-Since

Se la risorsa richiesta è stata modificata dopo l'istante di tempo specificato in questo campo allora viene restituita nella risposta, altrimenti la risorsa non viene restituita e viene inviato un codice HTTP 304.
Esempio: If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

  1. If-Modified-Since = "If-Modified-Since" ":" HTTP-date

If-None-Match

Il client invia al server in questo campo una lista delle entity tag relative alle entità che ha precedentemente ottenuto. Se una qualsiasi delle entity tag corrisponde alla entity tag della risorsa richiesta il server non dovrà trasferire la risorsa al client (a meno che questa non sia stata modificata dopo la data indicata nel campo If-Modified-Since), altrimenti la risorsa dovrà essere inviata al client.
Esempio: If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"

  1. If-None-Match = "If-None-Match" ":" ( "*" | 1#entity-tag )

If-Range

Se il client ha già nella sua cache una parte dell'entità e vuole aggiornare l'intera entità può inviare una richiesta specificando in questo campo quale parte dell'entità dovrà essere inviata. Se però l'entità è stata modificata il client dovrebbe fare una seconda richiesta per avere l'intera entità.

  1. If-Range = "If-Range" ":" ( entity-tag | HTTP-date )

If-Unmodified-Since

Il server invierà la risorsa richiesta se la risorsa non è stata modificata a partire dalla data e dall'ora indicata in questo campo.
Esempio: If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT

  1. If-Unmodified-Since = "If-Unmodified-Since" ":" HTTP-date

Max-Forwards

Limita il numero di volte che il messaggio può essere inviato attraverso proxy e gateway.
Esempio: Max-Forwards: 8

  1. Max-Forwards = "Max-Forwards" ":" 1*DIGIT

Pragma

Il campo Pragma è usato per includere direttive specifiche dell'implementazione che potranno avere effetti lungo alla catena richiesta/risposta.
Esempio: Pragma: no-cache

  1. Pragma = "Pragma" ":" 1#pragma-directive
  2. pragma-directive = "no-cache" | extension-pragma
  3. extension-pragma = token [ "=" ( token | quoted-string ) ]

Proxy-Authorization

Il campo contiene le credenziali per l'autenticazione con un proxy.
Esempio: Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

  1. Proxy-Authorization = "Proxy-Authorization" ":" credentials

Range

Il campo specifica quale parte (quale range) della risorsa è stata richiesta.
Esempio: Range: bytes=300-599

  1. ranges-specifier = byte-ranges-specifier
  2. byte-ranges-specifier = bytes-unit "=" byte-range-set
  3. byte-range-set = 1#( byte-range-spec | suffix-byte-range-spec )
  4. byte-range-spec = first-byte-pos "-" [last-byte-pos]
  5. first-byte-pos = 1*DIGIT
  6. last-byte-pos = 1*DIGIT

Referer

Indica l'URI della risorsa in cui è stata ottenuta l'URI della risorsa che si sta richiedendo.
Esempio: Referer: http://www.w3.org/hypertext/DataSources/Overview.html

  1. Referer = "Referer" ":" ( absoluteURI | relativeURI )

TE

Indica quale tipi di compressione sono accettati dal client.
Esempio: TE: deflate;q=0.5

  1. TE = "TE" ":" #( t-codings )
  2. t-codings = "trailers" | ( transfer-extension [ accept-params ] )

Upgrade

Il client indica in questo campo i protocolli che è in grado di supportare e chiede di passare ad un altro protocollo.
Esempio: Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

  1. Upgrade = "Upgrade" ":" 1#product

User-Agent

Contiene l'user agent.
Esempio: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)

  1. User-Agent = "User-Agent" ":" 1*( product | comment )

Via

In questo campo vengono inseriti i dati relativi ai gateway e ai proxy (protocolli e host intermedi) attraverso cui è passata la richiesta e la relativa risposta.
Esempio: Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

  1. Via = "Via" ":" 1#( received-protocol received-by [ comment ] )
  2. received-protocol = [ protocol-name "/" ] protocol-version
  3. protocol-name = token
  4. protocol-version = token
  5. received-by = ( host [ ":" port ] ) | pseudonym
  6. pseudonym = token

Warning

Avvertenza su possibili problemi.
Possibili valori
  • 110 Response is stale
  • 111 Revalidation failed
  • 112 Disconnected operation
  • 113 Heuristic expiration
  • 199 Miscellaneous warning
Esempio: Warning: 199 Miscellaneous warning

  1. Warning = "Warning" ":" 1#warning-value
  2. warning-value = warn-code SP warn-agent SP warn-text [SP warn-date]
  3.  
  4. warn-code = 3DIGIT
  5. warn-agent = ( host [ ":" port ] ) | pseudonym
  6. ; the name or pseudonym of the server adding
  7. ; the Warning header, for use in debugging
  8. warn-text = quoted-string
  9. warn-date = <"> HTTP-date <">

Risposta (Responses)


Accept-Ranges

Il server indica quale tipo di range supporta.
Esempio: Accept-Ranges: bytes

  1. Accept-Ranges = "Accept-Ranges" ":" acceptable-ranges
  2. acceptable-ranges = 1#range-unit | "none"

Age

Indica il tempo (stimato) da quando la risposta è stata generata dal server.
Esempio: Age: 25

  1. Age = "Age" ":" age-value
  2. age-value = delta-seconds

Allow

Indica la lista dei metodi supportati per la risorsa richiesta.
Esempio: Allow: GET, HEAD, PUT

  1. Allow = "Allow" ":" #Method

Cache-Control

Indica le direttive che devono essere rispettate da tutti i meccanismi di caching lungo la catena di richiesta e di risposta.
Esempio: Cache-Control: no-cache

  1. Cache-Control = "Cache-Control" ":" 1#cache-directive
  2. cache-directive = cache-request-directive
  3. | cache-response-directive
  4. cache-request-directive =
  5. "no-cache"
  6. | "no-store"
  7. | "max-age" "=" delta-seconds
  8. | "max-stale" [ "=" delta-seconds ]
  9. | "min-fresh" "=" delta-seconds
  10. | "no-transform"
  11. | "only-if-cached"
  12. | cache-extension
  13. cache-response-directive =
  14. "public"
  15. | "private" [ "=" <"> 1#field-name <"> ]
  16. | "no-cache" [ "=" <"> 1#field-name <"> ]
  17. | "no-store"
  18. | "no-transform"
  19. | "must-revalidate"
  20. | "proxy-revalidate"
  21. | "max-age" "=" delta-seconds
  22. | "s-maxage" "=" delta-seconds
  23. | cache-extension
  24. cache-extension = token [ "=" ( token | quoted-string ) ]

Content-Encoding

Indica il tipo di compressione applicata ai dati.
Esempio: Content-Encoding: gzip

  1. Content-Encoding = "Content-Encoding" ":" 1#content-coding

Content-Language

Indica la lingua della risorsa inviata.
Esempio: Content-Language: da

  1. Content-Language = "Content-Language" ":" 1#language-tag

Content-Length

Indica la dimensione del corpo della risposta espresso in byte.
Esempio: Content-Length: 3495

  1. Content-Length = "Content-Length" ":" 1*DIGIT

Content-Location

Questo campo può essere usato per indicare una diversa locazione per la risorsa qualora la risorsa sia accessibile anche ad un'altra locazione.
Esempio: Content-Location: /copia/index.htm

  1. Content-Location = "Content-Location" ":"
  2. ( absoluteURI | relativeURI )

Content-MD5

Questo campo contiene la firma MD5 del corpo dell'entità.
Esempio: Content-MD5: W2hlY67gSw50ZWdyaXR5SD==

  1. Content-MD5 = "Content-MD5" ":" md5-digest
  2. md5-digest = <base64 of 128 bit MD5 digest as per RFC 1864>

Content-Range

Indica quale parte della risorsa richiesta è stata inviata.
Esempio: Content-Range: bytes 500-1233/1234

  1. Content-Range = "Content-Range" ":" content-range-spec
  2. content-range-spec = byte-content-range-spec
  3. byte-content-range-spec = bytes-unit SP
  4. byte-range-resp-spec "/"
  5. ( instance-length | "*" )
  6. byte-range-resp-spec = (first-byte-pos "-" last-byte-pos)
  7. | "*"
  8. instance-length = 1*DIGIT

Content-Type

Indica il MIME-type della risorsa.
Esempio: Content-Type: text/html; charset=utf-8

  1. Content-Type = "Content-Type" ":" media-type

Date

Indica la data e l'ora in cui il messaggio è stato generato.
Esempio: Date: Tue, 15 Nov 1994 08:12:31 GMT

  1. Date = "Date" ":" HTTP-date

ETag

Il campo contiene la ETag (Entity Tag).
Esempio: ETag: "xyzzy"

  1. ETag = "ETag" ":" entity-tag

Expires

Indica la data e l'ora dopo la quale la risposta deve essere considerata obsoleta.
Esempio: Expires: Thu, 01 Dec 1994 16:00:00 GMT

  1. Expires = "Expires" ":" HTTP-date

Last-Modified

Indica la data e l'ora in cui la risorsa richiesta è stata modificata per l'ultima volta.
Esempio: Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

  1. Last-Modified = "Last-Modified" ":" HTTP-date

Location

Campo usato per la redirezione o nel caso in cui una nuova risorsa è stata creata.
Esempio: Location: http://www.w3.org/pub/WWW/People.html

  1. Location = "Location" ":" absoluteURI

Pragma

Il campo Pragma è usato per includere direttive specifiche dell'implementazione che potranno avere effetti lungo alla catena richiesta/risposta.
Esempio: Pragma: no-cache

  1. Pragma = "Pragma" ":" 1#pragma-directive
  2. pragma-directive = "no-cache" | extension-pragma
  3. extension-pragma = token [ "=" ( token | quoted-string ) ]

Proxy-Authenticate

È inclusa come parte di una risposta con codice HTTP 407 Proxy Authentication Required. Nel campo è indicato lo schema di autenticazione e i parametri applicabili.


  1. Proxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge

Retry-After

Usato nel caso di risposta con codice HTTP 503 Service Unavailable per indicare al client dopo quanto tempo inoltrare di nuovo la richiesta. Può indicare un numero di secondi o una data dopo cui ritentare la richiesta.
Esempio: Retry-After: 120
Retry-After: Fri, 31 Dec 1999 23:59:59 GMT

  1. Retry-After = "Retry-After" ":" ( HTTP-date | delta-seconds )

Server

Contiene informazioni sul server.
Esempio: Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)

  1. Server = "Server" ":" 1*( product | comment )

Trailer



  1. Trailer = "Trailer" ":" 1#field-name

Transfer-Encoding

La compressione usata per trasferire l'entità all'utente.
Esempio: Transfer-Encoding: chunked

  1. Transfer-Encoding = "Transfer-Encoding" ":" 1#transfer-coding

Vary



  1. Vary = "Vary" ":" ( "*" | 1#field-name )

Via

In questo campo vengono inseriti i dati relativi ai gateway e ai proxy (protocolli e host intermedi) attraverso cui è passata la richiesta e la relativa risposta.
Esempio: Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

  1. Via = "Via" ":" 1#( received-protocol received-by [ comment ] )
  2. received-protocol = [ protocol-name "/" ] protocol-version
  3. protocol-name = token
  4. protocol-version = token
  5. received-by = ( host [ ":" port ] ) | pseudonym
  6. pseudonym = token

Warning

Avvertenza su possibili problemi.
Possibili valori
  • 110 Response is stale
  • 111 Revalidation failed
  • 112 Disconnected operation
  • 113 Heuristic expiration
  • 199 Miscellaneous warning
Esempio: Warning: 199 Miscellaneous warning

  1. Warning = "Warning" ":" 1#warning-value
  2. warning-value = warn-code SP warn-agent SP warn-text [SP warn-date]
  3.  
  4. warn-code = 3DIGIT
  5. warn-agent = ( host [ ":" port ] ) | pseudonym
  6. ; the name or pseudonym of the server adding
  7. ; the Warning header, for use in debugging
  8. warn-text = quoted-string
  9. warn-date = <"> HTTP-date <">

WWW-Authenticate

Indica lo schema di autenticazione che deve essere seguito per poter accedere alla risorsa richiesta.

  1. WWW-Authenticate = "WWW-Authenticate" ":" 1#challenge