Procedura di Content Negotiation

Quando la direttiva Multiviews o le type maps sono attivate bisogna considerare 4 varianti per la selezione di un file:
- MimeType
- Encoding
- Language
- Character set

La procedura è stata creata per risolvere tutte le possibili varianti:

- Vengono estratti i valori dei parametri settati con gli Accept-* header, e per tutti questi valori viene confrontata con le varianti in type maps e la ricerca tramite la direttiva Multiviews.
- Se nessuna delle varianti passa il test, viene generato un errore 406 - NO acceptable representation, il quale produce una pagina html contenente la lista delle possibili varianti, altrimenti viene selezionata la migliore secondo i seguenti step:
- Viene moltiplicato il fattore Accept quality con il  fattore source quality per ogni variante. Se dal prodotto di questi fattori risulta più alto tale variante vincerà il content altrimenti verranno selezionate le varianti con il più alto language quality factor.
- Se anche nel caso precedente non vi è nessun risultato dominante rispetto ad altri, verranno selezionate le varianti con un livello più alto di media parameter (Di default i documenti in formato text/html hanno un livello pari a 2  mentre tutti gli altri a 0). Se, anche in questo caso, non viene prodotto un singolo risultato vincente occorre selezionare la variante con la miglior charset media parameter selezionata dell'header Accept-Charset.
- Il passo successivo, nel caso in cui la negoziazione dovesse continuare, è quello di selezionare le varianti con il migliore encoding, tramite i valori settai tramite l'header Accept-Encoding.
- Se anche l'ultimo confronto dovesse fallire viene selezionata la prima variante:
la prima entry del file nel caso di type map,
la prima variante in ordine alfabetico nel caso di Multiviews.
- A questo punto, la richiesta del client è stata soddisfatta. Il server si preoccupa di inviare un header aggiuntivo vary header che indica il criterio di selezione nel content negotiation, questo è molto utile per evitare un ulteriore content negotiation della stessa risorsa.

Privacy Policy