Header order question in PHP (and HTTP in general)
Is there a particular order in PHP to set HTTP headers with the header()
function ?
I mean, for example, must I call
header('Content-Language: en');
before
h开发者_JS百科eader('Content-Type: text/plain');
or does the order not matter?
My guess is that order isn't important as long as all the headers are set before any content is outputted, but I just want to be sure that's the case...
No, the order of the header fields doesn’t matter:
The order in which header fields with differing field names are received is not significant. However, it is "good practice" to send general-header fields first, followed by request-header or response- header fields, and ending with the entity-header fields.
Only if you’re sending multiple fields of the same name. Then the field values are treated like they would appear in one list:
Multiple message-header fields with the same field-name MAY be present in a message if and only if the entire field-value for that header field is defined as a comma-separated list [i.e.,
#(values)
]. It MUST be possible to combine the multiple header fields into one "field-name: field-value" pair, without changing the semantics of the message, by appending each subsequent field-value to the first, each separated by a comma. The order in which header fields with the same field-name are received is therefore significant to the interpretation of the combined field value, and thus a proxy MUST NOT change the order of these field values when a message is forwarded.
So the following:
Cache-Control: private
Cache-Control: must-revalidate
would be equivalent to:
Cache-Control: private, must-revalidate
And here it depends on the definition of the header field (here Cache-Control) if the order does matter.
The order in which header fields with differing field names are received is not significant. However, it is "good practice" to send general-header fields first, followed by request-header or response- header fields, and ending with the entity-header fields.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 (Hypertext Transfer Protocol -- HTTP/1.1)
精彩评论