For all those having problems with FDF's, ZIPs, Word Docs or any other external file opening in Internet Explorer, allow me to issue my condolences. I myself just spent a combined total of 10 hours on tech support over 3 days with Microsoft getting this issue fixed. I just wanted to add this to the site so that everyone who is still having this problem (or is having it in the future) can easily take care of this.
From what we could figure out, when streaming a file to IE, you cannot have no_cache() set or cache_control set to no-cache. Also, even if you do NOT have it set, if you do not set your cache control to public, it will automatically assume you intend it to be no_cache. Internet Explorer is just that stupid.
To fix this problem, simply include a header with cache control set to public like so:
header("cache-control: public");
Also, if you use sessions, adding "session_cache_limiter('public');" before "session_start();" will take care of this problem as well.
And if you are using it on a secure server, it enforces a no_cache rule and you MUST include a header which allows caching.
Microsoft actually considers these problems to be a feature!
Microsoft Knowledge Base Article 316431 says:
In order for Internet Explorer to open documents in Office (or any out-of-process, ActiveX document server), Internet Explorer must save the file to the local cache directory and ask the associated application to load the file by using IPersistFile::Load. If the file is not stored to disk, this operation fails.
When Internet Explorer communicates with a secure Web site through SSL, Internet Explorer enforces any no-cache request. If the header or headers are present, Internet Explorer does not cache the file. Consequently, Office cannot open the file.
If you still have problems, I suggest looking at these links:
http://php3.de/manual/en/function.session-cache-limiter.php
http://www.phpbuilder.com/lists/php-general/2003081/0299.php