2010-01-19 8 views
5

Esiste un particolare ordine in PHP per impostare le intestazioni HTTP con la funzione header()?Domanda di ordine di intestazione in PHP (e HTTP in generale)

Intendo ad esempio devo chiamare intestazione ('Content-Language: en'); prima dell'intestazione ('Content-Type: text/plain'); o qualsiasi altro ordine sarà OK.

La mia ipotesi è che l'ordine non è importante il tempo che tutto quello che le intestazioni sono impostati prima di qualsiasi contenuto emesso, ma voglio solo essere sicuro che sia il caso ...

risposta

8

No, il order of the header fields non lo fa numero:

L'ordine in cui vengono ricevuti i campi di intestazione con nomi di campo diversi non è significativo. Tuttavia, è "buona pratica" inviare prima i campi di intestazione generale, seguiti dai campi di intestazione di richiesta o di risposta, e terminando con i campi di intestazione dell'entità.

Solo se si inviano più campi con lo stesso nome. Quindi i valori dei campi vengono trattati come se fossero visualizzati in un elenco:

Più campi di intestazione messaggio con lo stesso nome campo POSSONO essere presente in un messaggio se e solo se l'intero valore campo per quel campo di intestazione è definito come un elenco separato da virgole [cioè, #(values)]. Deve essere possibile combinare i campi di intestazione multipli in una coppia "nome-campo: campo-valore", senza cambiare la semantica del messaggio, aggiungendo ogni successivo valore-campo al primo, ciascuno separato da una virgola. L'ordine in cui vengono ricevuti i campi di intestazione con lo stesso nome di campo è quindi significativo per l'interpretazione del valore di campo combinato, e quindi un proxy NON DEVE cambiare l'ordine di questi valori di campo quando viene inoltrato un messaggio.

Così i seguenti:

Cache-Control: private 
Cache-Control: must-revalidate 

sarebbe equivalente a:

Cache-Control: private, must-revalidate 

E qui dipende dalla definizione del campo di intestazione (qui Cache-Control) se il l'ordine conta.

4

L'ordine in cui vengono ricevuti i campi di intestazione con nomi di campo diversi non è significativo. Tuttavia, è "buona pratica" inviare prima i campi di intestazione generale, seguiti dai campi di intestazione di richiesta o di risposta, e terminando con i campi di intestazione dell'entità.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 (Hypertext Transfer Protocol - HTTP/1.1)

Problemi correlati