11

我有一个由 PHP 页面 request.php 动态渲染的图像。由于其包含的数据的性质,无法缓存此图像。request.php 呈现的图像取决于用户的 cookie。当我从 IE8 和 IE9 打印时,在尝试下载 request.php 返回的图像时,这些 cookie 不会在请求标头中发送。我通过使用 Fiddler 和监视请求/响应标头来确定这一点。

我的第一个想法是将cookie信息放在request.php的URL中,但是这样做有问题。我设置的 cookie 是使用httponly标志集创建的(出于安全原因)。换句话说,我无法从脚本访问此 cookie。我确实使用 jQuery 来设置图像的源,使用类似$("#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 httponlyflag。

我不能使用 base64 将图像数据直接包含在src属性中,因为图像太大(IE8 有 32KB 限制)。

是否有一种技巧可以强制 IE 在打印/打印预览期间对未缓存图像的请求中发送 cookie?

4

1 回答 1

0

经过研究,IE似乎无法在打印时在未缓存图像的请求标头中发送cookie数据。为了解决这个问题,我使用该window.onbeforeprint事件向cache=true我的图像 URL 添加一个参数。在后端,我为要在短时间内缓存的图像设置标题。虽然这不能解决问题(因为我不相信有真正的解决方法),但它确实规避了问题,并且 IE 能够打印图像。

于 2012-08-10T15:36:26.263 回答