8
votes

Problèmes avec l'en-tête () lors de l'affichage d'un fichier PDF dans IE8

Donc, j'ai un fichier qui envoie ce qui suit: xxx

puis j'échresse le fichier - c'est un fichier PDF.

fonctionne bien dans IE6 et 7 sur XP (et FF pour cette affaire) Le même code ne montre rien lors de l'exécution de IE8 sur XP ou Vista. Il n'y a pas d'avertissements de sécurité, etc., donc je ne pense pas que cela a à voir avec ça.

Et si ma mémoire me sert correctement, cela a fonctionné sur IE8 il y a un moment.

Qu'est-ce que je fais mal ici? Est-ce que je manque quelque chose hors des en-têtes?

Y a-t-il un moyen pour moi de voir quelles informations d'en-tête normales reviennent lors de la visualisation d'un fichier PDF dans IE8, donc je sais quoi imiter?

Après avoir regardé des choses, cela fonctionne toujours dans IE8 sauf lorsque SSL est sur


1 commentaires

N'envoyez pas l'en-tête longueur de contenu , laissez le serveur Web le faire.


6 Réponses :


1
votes

Je ne suis pas sûr de ce qui est nécessaire, mais voici ce que vous pourriez faire. Mettez temporairement le fichier temporairement dans un lieu public sur votre serveur, créez SYRE que vous pouvez télécharger avec un lien direct dans IE8, utilisez des en-tèvles Firefox LiveHTTP ou similaire pour saisir tous les en-têtes que le serveur envoie. Crachez-les exactement de la même manière et de votre commande dans votre script. (Et n'oubliez pas de supprimer le fichier).


2 commentaires

J'allais dire exactement la même chose. Fiddler vous donnera également les en-têtes avec IE.


Merci, ça fait l'affaire. J'ai découvert que j'envoie le mauvais ensemble d'en-têtes à IE (j'avais l'aide de l'ensemble que j'envoie à Firefox)



0
votes

J'utilise HTTPS et j'ai eu des problèmes, mais en utilisant ces en-têtes, le téléchargement a fait. Essayez-le.

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Pragma: public"); 
header("X-Download-Options: noopen "); // For IE8
header("X-Content-Type-Options: nosniff"); // For IE8
header("Content-type: application/pdf");
header("Content-disposition: inline; filename=file.pdf");
header("Content-length: 7735");


0 commentaires

0
votes

1
votes

Quelque chose que je veux ajouter, comme je suis confronté à ce problème, d'une manière légèrement différente en utilisant Joomla.

PDF normal de contenu fonctionné bien, dans tous les navigateurs. P>

mais La génération d'un PDF de mon propre composant (utilisant JDocument, Tho) a généré le bevahiour mentionné ci-dessus. P>

Ma solution: Activez explicitement la mise en cache de mon composant à l'aide de l'instruction suivante dans la vue.html.php: P>

JResponse::allowCache(true); 


0 commentaires

18
votes

Sous HTTPS et IE8, ces en-têtes corrigent le problème de téléchargement:

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Pragma: public");


5 commentaires

C'est ce qui a fonctionné pour moi. Aussi, avoir «No-cache» nulle part dans votre en-tête de contrôle cache, le téléchargement échoue dans IE8. J'ai lu ailleurs c'est parce que IE8 "met en cache" votre téléchargement dans son dossier temporaire lors du transfert, mais ne peut pas vérifier cela.


C'est l'une de ces fois où l'on remercie Stackoverflow d'exister et @Mikikg dans ce cas précis. J'ai cherché cet en-tête corrigé pendant des semaines.


Meilleure réponse en effet. Pour livrer le PDF que j'ai utilisé en-tête ('Cache-Control: max-Âge = 2592000, Public, Post-Check = 0, Pré-chèque = 0'); sans le et cela fonctionne aussi bien.


J'ai eu cette question avec http et ce correctif a également fonctionné pour moi. Merci!


Pour ceux qui lisent cela et veulent utiliser un poste et une vérification préalable, ils peuvent vouloir regarder l'article suivant: blogs.msdn.com/b/ieInternals/archive/2009/07/20/...



2
votes

Il a probablement de faire avec le SSL. J'ai lu Cet article (dans Allemand, avec des exemples de code) où l'auteur définit l'en-tête suivant: xxx


0 commentaires