Java  »  Articoli  »  JSP e servlet 

Request e Response header del protocollo HTTP

di: Marco Altese     26 Marzo 2007

Quando si scrivono applicazioni web, basate su Servlet o pagine JSP, solitamente le servlet API si occupano direttamente dell'interazione con il protocollo HTTP, sollevando il programmatore da tali questioni.

Tuttavia, può sorgere la necessità di interagire direttamente con le request e le response header legate al medesimo protocollo HTTP e in tal caso, sarà necessario avvalersi direttamente delle servlet API.

Rinfreschiamo la memoria esaminando come sono strutturati gli oggetti request e response dell'Hyper Text Transfer Protocol:

HTTP request

Vediamo un esempio di HTTP request, utilizzando la richiesta effettuata tramite un browser Internet Explorer, all'indirizzo www.html.it:

GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, */*
Accept-Language: it
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: www.html.it
Connection: Keep-Alive
Cookie: __utma=151439968.604684092.1165355506.1165355506.1165357918.2; __utmz=151439968.1165357918.2.2.utmccn=(organic)|utmcsr=google|utmctr=%2Beclipse+%2B%22web+editor%22|utmcmd=organic

La prima riga della request (request line) contiene il metodo utilizzato per la richiesta (nel nostro esempio GET), la URL associata alla richiesta stessa e la versione del protocollo HTTP utilizzata (nel nostro esempio: HTTP/1.1)

Dopo la request line, vediamo una serie di request header che forniscono informazioni sul browser e sulla richiesta specifica.

Nel nostro esempio, sono contenute sette request header anche se il numero di header, in generale, può essere variabile. Ogni request header inizia sempre con il nome della request header stessa (per es.: User-Agent), seguito dal carattere ":", da uno spazio e, infine, dal valore associato all'header.

Le request header più usate sono le seguenti:

  • Accept: specifica l'ordine preferito dal browser relativamente ai MIME types supportati. La stringa "*/*" indica che il browser è in grado di gestire qualunque tipologia di MIME type.
  • Accept-Encoding: specifica le tipologie di compressioni accettate dal browser
  • Accept-Charset: specifica l'insieme di caratteri che il browser può accettare.
  • Accept-Language: serve a specificare i codici dei linguaggi standard che il browser preferisce ricevere.
  • Authorization: identifica il livello di autorizzazione per il browser. Quando si utilizza la sicurezza gestita dal container, il servlet container si occupa di impostare questo header in modo automatico.
  • Connection: indica il tipo di connessione che viene utilizzata dal browser. Nella versione 1.1 del protocollo HTTP tale valore è valorizzato con la stringa "Keep-Alive".
  • Cookie: specifica i valori di eventuali cookie inviati dal server nelle precedenti comunicazioni con il browser.
  • Host: contiene informazioni sull'host e la porta
  • Referer: la url della pagina web cui si fa riferimento. Si noti, per curiosità, l'errore ortografico (la parola corretta sarebbe Referrer) commesso da uno degli autori del protocollo HTTP che si decise di non correggere nelle versioni successive.
  • User-agent: indica il tipo di browser. Sia Internet Explorer che Netscape Navigator si identificano come "Mozilla" ma il primo include anche la stringa "MSIE"

Guide Java

Guida Apache Struts

Il primo e più utilizzato tra i framework MVC del mondo Java,...

Guida Java Spring

Scoprire il lightweight container più famoso del mondo Java....

Guida Java 6

Prendendo le mosse dalla guida Java, già presente su HTML.it,...

Altre guide

Newsletter @Programmazione

Ogni mese, direttamente nella tua e-mail: articoli, script e guide su Java, Visual Basic, VB.Net ed i più diffusi linguaggi di programmazione.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti