我有一张由 PHP 页面 request.php 动态呈现的图像。由于其包含的数据的性质,无法缓存该图像。 request.php 呈现的图像取决于用户的 cookie。当我从 IE8 和 IE9 打印时,在尝试下载 request.php 返回的图像时,这些 cookie 没有在请求 header 中发送。我通过使用 Fiddler 和监控请求/响应 header 来确定这一点。
我的第一个想法是将 cookie 信息放在 request.php 的 URL 中,但这样做有问题。我设置的 cookie 是在设置了 httponly
标志的情况下创建的(出于安全原因)。换句话说,我无法从脚本访问此 cookie。我确实使用 jQuery 来设置图像的来源,例如 $("#myimage").attr("src", "request.php?d="+ dynamical_set_data_string);
没有办法由于 httponly
标志,将任何 cookie 信息附加到此 jQuery 调用。
我无法使用 base64 将图像数据直接包含在 src
属性中,因为图像太大(IE8 有 32KB 的限制)。
在打印/打印预览期间是否有强制 IE 在请求未缓存图像时发送 cookie 的技巧?
最佳答案
经过研究,IE 似乎无法在打印时为未缓存的图像在请求 header 中发送 cookie 数据。为了解决这个问题,我使用 window.onbeforeprint
事件将 cache=true
参数添加到图像的 URL。在后端,我为要在短时间内缓存的图像设置 header 。虽然这不能解决问题(因为我不相信有真正的解决方法),但它确实绕过了问题,并且 IE 能够打印图像。
关于php - 打印时 IE 不重新发送 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865880/