This article was previously published under Q293792
This article has been archived. It is offered "as is" and will no longer be updated.
When a server returns a document that is handled by a plug-in (such as an Adobe Acrobat PDF file), three requests are made for the document in Internet Explorer versions 4.x and 5, and two requests are made in Internet Explorer version 5.5.
Occasionally, Internet Explorer determines the plug-in type; however, Internet Explorer still displays the broken plug-in icon instead of the document.
The first behavior is by design. When an initial request is sent for the server file, this returns a data stream with a content-type that is handled by a plug-in (not an ActiveX control), and Internet Explorer closes the initial port and sends a new request with userAgent = contype.
The only information that is needed in return from the contype request is the content-type. However, because most developers are unaware of this request style, they treat each GET the same and return the entire document. This is where the second problem can manifest itself. Internet Explorer is hard coded to time out in only 10 seconds if the contype request is not answered. If you are reading large files from disk or opening a database to retrieve the file, you can easily exceed the 10 second time-out limit.
In Internet Explorer 4.x and 5, the browser first generates a GET request to the server. The server responds with the content-type, and the browser looks at the registry to check which application it will invoke. Then the browser generates a second GET request, and, after the server responds with the same content-type, the browser invokes the targeted application inside the browser window. Lastly, the browser sends a third GET request, and this time the browser renders the content of the server file inside the browser and completes the process.
Internet Explorer 5.5 uses the same method but sends two GET requests instead of three.
To work around this limitation and to considerably improve the performance of your application, watch for the "contype" userAgent request and only return the content-type.
If possible, configure the plug-in to operate as a helper application instead. Some plug-ins may not work in this mode, but it is a confirmed solution for PDF files and the Adobe Acrobat Reader.
Sample Solution for a PDF File
Access the PDF file through an HTML page that uses the <OBJECT> tag to specify the ActiveX control version of the PDF viewer as follows:
Microsoft Internet Explorer 4.0 128-Bit Edition, Microsoft Internet Explorer 4.01 Service Pack 2, Microsoft Internet Explorer 4.01 Service Pack 1, Microsoft Internet Explorer 4.01 Service Pack 2, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.01, Microsoft Internet Explorer (Programming) 5.01 SP1, Microsoft Internet Explorer 5.5