2009-02-27 10 views

risposta

9

Per verificare quale sia la codifica del corpo della risposta, è necessario controllare l'intestazione della risposta HTTP: Content-Encoding.

Al server è consentito solo l'utilizzo di codifiche specificate dall'intestazione della richiesta accept-encoding. Se il server non può fornire una risposta utilizzando una delle accettate-codifiche specificate, allora deve rispondere con 406 (Non accettabile). richiesta

Esempio: risposta

GET/HTTP/1.1 
Host: www.brianbondy.com 
Accept-Encoding: gzip,deflate 

Esempio:

HTTP/1.1 200 OK 
Date: Thu, 04 Dec 2003 16:15:12 GMT 
Server: Apache/2.0 
Content-Encoding: gzip 
Content-Length: 1533 

Altri esempi di codifica Accept-:

Accept-Encoding: compress, gzip 
Accept-Encoding: 
Accept-Encoding: * 
Accept-Encoding: compress;q=0.5, gzip;q=1.0 
Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0 

Come sapere esattamente che cosa sono disponibili codifiche sul server:

Non c'è modo di sapere esattamente che cosa sono disponibili codifiche a livello di server, perché alcuni server possono supportare alcune codifiche solo per alcuni tipi di file.

Ciò significa che il meglio che puoi fare è rispondere alla domanda: Per il file specificato nella prima riga della richiesta, è disponibile la codifica specifica per questo file? Puoi rispondere negando esplicitamente la codifica del contenuto dell'identità e specificando anche la codifica che desideri conoscere.

Accept-Encoding: gzip, identity;q=0 

Source of examples, HTTP RFC

+0

Ma la codifica di identità (vale a dire senza compressione) è sempre consentito, a meno che non vieta esplicitamente di esso.Quindi se il server restituisce Content-Encoding: identity, non si sa ancora se supporta la compressione o meno; potrebbe semplicemente aver scelto di non comprimere questa particolare risposta. – Thomas

+0

descrizione aggiornata –

+0

Vuoi dire 'gzip, identity; q = 0' invece di' gzip; identità; q = 0'? – Pacerier

4

Dal HTTP spec:

4. La codifica del contenuto "identità" è sempre accettabile, a meno che non venga rifiutato in modo specifico perché il campo Accept-Encoding include "identity; q = 0" o perché il campo include "*; q = 0" e non include codifica del contenuto di "identità". Se il valore campo Accept-Encoding è vuoto, solo la codifica "identità" è accettabile.

Quindi, se si imposta Accept-Encoding: identity;q=0, gzip, deflate si forza il server per comprimerlo, o restituire un 406 (non accettabile).

+0

Per quanto ne so, Microsoft-IIS/7.0 non rispetta questo. Apache rispetta questo? O l'apache restituirebbe semplicemente l'identità anziché 406 (allo stesso modo Microsoft-IIS)? – Pacerier

Problemi correlati