2010-08-22 5 views
2

J'ai un script PHP qui lit un fichier et le renvoie au client. C'est un fichier CSS, donc j'ai utilisé header() pour définir Content-Type, et Cache-Control. Si j'ajoute un en-tête inventé, je peux le voir en utilisant Tamper Data, donc il semble que ça fonctionne (et le fichier est bien reçu par le navigateur). Ce que je ne comprends pas, c'est que je vois aussi un certain nombre d'autres en-têtes (par exemple Expires) et que quelque chose change réellement ma valeur de - sans doute parce que c'est Content-Encoding: gzip. En php.ini il a zlib.output_compression = Off donc je ne sais pas ce qui saute à la dernière étape pour modifier les en-têtes. Quelqu'un peut-il expliquer cela pour moi?D'où proviennent les champs d'en-tête HTTP dans la sortie PHP (sauf header())

Nous vous remercions de votre temps.

Répondre

1

Ces en-têtes proviennent du serveur Web. PHP est appelé pour fournir le contenu (et les en-têtes supplémentaires), mais c'est le serveur Web qui assure la distribution, en utilisant ses propres règles et paramètres de configuration.

+0

Merci pour la réponse rapide. Il est donc parfaitement acceptable/normal de définir des en-têtes minimaux et de laisser le serveur web l'empaqueter dans une réponse HTTP valide? – Jes

+0

@Jes dépend totalement de ce que vous voulez faire! Habituellement, la réponse est oui: Le serveur Web héberge généralement des en-têtes par défaut sains. Mais 'content-type' et' cache-control' vous pouvez avoir besoin dans certaines situations. Par exemple, si vous générez dynamiquement une feuille de style CSS dans un script PHP se terminant par .php, vous devez lui envoyer un type de contenu 'text/css' ou Firefox ne l'acceptera pas. Cela dépend vraiment de la situation. –

+0

Merci - très utile. – Jes