I have an image rendered on the fly by a PHP page request.php. This image cannot be cached because of the nature of the data it contains. The image that’s rendered by request.php depends on the user’s cookies. When I go to print from both IE8 and IE9, these cookies are not being sent in the request headers when attempting to download the image returned by request.php. I determined this by using Fiddler and monitoring request/response headers.
My first idea was to just put the cookie information in the URL of request.php, but there’s a problem with this. The cookies I set are created with the httponly flag set (for security reasons). In other words, I cannot access this cookie from a script. I do use jQuery to set the source for the image using something like $("#myimage").attr("src", "request.php?d=" + dynamically_set_data_string); There’s no way to append any cookie information to this jQuery call because of the httponly flag.
I cannot use base64 to contain the image data directly in the src attribute because the images are too large (IE8 has a 32KB limit).
Is there a trick to force IE to send cookies in requests for uncached images made during printing/print preview?
After doing research, it looks like there’s no way for IE to send cookie data in the request headers for uncached images when printing. To get around this, I use the
window.onbeforeprintevent to add acache=trueparameter to my image’s URL. On the backend, I set headers for the image to be cached for a short time period. Although this doesn’t fix the problem (because I don’t believe there is a true fix), it does circumvent the issue, and IE is able to print the image.