Supprimer un en-tête en PHP
Pour permettre la mise en cache PHP fichier généré, je veux faire en sorte que les "Pragma: no-cache' en-tête est pas ensemble. Cependant, comment puis-je supprimer un peut-être déjà définir l'en-tête?
Qui est, il pourrait être possible, que quelque part dans le code de quelqu'un a écrit header('Pragma: no-cache');
et maintenant, je tiens à vous assurer, l'en-tête n'est pas envoyé.
Est-il suffisant pour ce faire:
header('Pragma:');
ou est-il quelque chose comme delete_header()
(qui, apparemment, être sans-papiers ou bien caché)?
Depuis PHP est un logiciel open source, il serait absurde d'avoir quelque chose de "sans-papiers et bien caché".
Je connais des dizaines de sans-papiers OS projets, et bien caché peut aussi être involontaire.
Je connais des dizaines de sans-papiers OS projets, et bien caché peut aussi être involontaire.
OriginalL'auteur Boldewyn | 2010-04-03
Vous devez vous connecter pour publier un commentaire.
header_remove() depuis php 5.3
header_register_callback() est également à venir
Quelles sont les solutions pour avant de php 5.3? J'ai actuellement PHP/5.2.17
pour php < 5.3.0 "header('Pragma:');" fait le job. Le navigateur ne peut pas recevoir tout "Pragma' de l'en-tête (même vide).
Je l'ai testé. Ce que vous avez dit n'est pas vrai. Le navigateur reçoit un en-tête vide. L'ajout d'un en-tête vide n'est pas la suppression d'en-tête à tous!
OriginalL'auteur goat
Je sais que cette question est ancienne et a déjà répondu. Mais certaines réponses pourraient laisser les gens avec une mauvaise impression. Rassurez-vous que si vos en-têtes de réponse contenir
Pragma: no-cache
il absolument en fait d'empêcher un navigateur web à partir de la mise en cache une ressource indépendamment des autres paramètres.Alors bien sûr, si vous utilisez au moins PHP 5.3, vous pouvez supprimer le
Pragma
- tête à l'aideheader_remove( 'Pragma' );
.OriginalL'auteur Craig
Vous pouvez remplacer précédemment fixé en-tête en passant un deuxième argument à
header()
:Vérifier la manuel pour
header()
Non, ce ne sera pas l'effacer de la liste des envoyés. Il serait de la remplacer par pas de valeur, ce qui signifie bien que le résultat est le même, nous sommes l'envoi d'octets inutiles puisque nous aurons encore pour envoyer la chaîne "Pragma:" sur le fil.
OriginalL'auteur pix0r
Le "pragma" en-têtes comportements ne sont pas définies par le spec - en dépit de l'opinion largement répandue de croire que l'envoi d'un 'Pragma: No-cache' en-tête vont avoir un effet sur le navigateur, en fait, il est presque universellement ignoré et n'est jamais retourné en toute installation de php que j'ai utilisé).
De dire au navigateur de ne PAS le contenu du cache se fait via un en-tête expires avec une date dans le passé, une-tête Cache-Control avec une valeur "no-cache, ou (si vous voulez être sournois) par un "Varie: Date' en-tête. En l'absence de l'un de ces types d'en-tête, le client ne doit pas mettre en cache la page.
Donc, à l'inverse, si vous souhaitez une page pour être mis en cache, définir le expires et cache-cntrol en-têtes.
C.
Pas - c'est le titre de la question mais ce que l'OP cherche à atteindre est de rendre le contenu mis en cache - suppression d'un pragma-tête n'a pas de pertinence à cette
la question est "comment puis-je supprimer un peut-être déjà définir l'en-tête?"
Vous lisez trop. Le titre de la question décrit la question.
Je pense que ce n'est plus le cas.
OriginalL'auteur symcbean