Jason
Jason

Reputation: 15335

Problems with header() when displaying a PDF file in IE8

So, I have a file that sends the following:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: private");
header("Content-type: application/pdf");
header("Content-disposition: inline; filename=file.pdf");
header("Content-length: 7735");

then I echo out the file - it is a PDF file.

Works fine in IE6 & 7 on XP (and FF for that matter) The very same code shows nothing when running on IE8 on either XP or Vista. There are no security warnings, etc so I don't think it has to do with that.

And, if my memory serves me correctly, this worked on IE8 a while ago.

What am I doing wrong here? Am I missing something out of the headers?

Is there a way for me to see what header information normal comes over when viewing a PDF in IE8 so I know what to emulate?

After looking at things it still works in IE8 EXCEPT when SSL is on

Upvotes: 8

Views: 14357

Answers (6)

chiborg
chiborg

Reputation: 28074

It has probably to do do with the SSL. I read this article (in German, with code examples) where the author set the following header:

header('Pragma: anytextexeptno-cache', true);

Upvotes: 2

mikikg
mikikg

Reputation: 1503

Under HTTPS and IE8, those headers fix the download problem:

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

Other X-something headers did not make any difference.

Upvotes: 18

Fabian
Fabian

Reputation: 11

Something I want to add, as I faced this problem, too, in a slightly different way using Joomla.

Normal PDF-Output of content worked fine, in all browsers.

But the generation of a pdf from within my own component (using JDocument, tho) generated the bevahiour mentioned above.

My solution: Explicitly enable caching for my component using the following statement in view.html.php:

JResponse::allowCache(true); 

Maybe that helps somebody.

Upvotes: 1

user173796
user173796

Reputation:

I'm using HTTPS and i had some problems, but using those headers the download did. Try it.

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");

The problem is you cant direct open. Just save.

Upvotes: 0

user152247
user152247

Reputation: 36

I'm not sure what is needed, but here is what you could do. Put the file temporarily in a public place on your server, make syre you can download that with a direct link in IE8, Use firefox LiveHTTP headers or similar to grab all headers that the server sends. Spit them out in exactly the same way and order in your script. (And don't forget to delete the file).

Upvotes: 1

Related Questions