IE打印时不发送cookie

时间:2012-08-08 13:44:44

标签: php jquery internet-explorer cookies printing

我有一个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);由于httponly标志,没有办法将任何cookie信息附加到此jQuery调用。

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

是否有诀窍迫使IE在打印/打印预览期间对未缓存图像的请求中发送cookie?

1 个答案:

答案 0 :(得分:0)

在进行研究之后,看起来IE在打印时无法在未缓存图像的请求标头中发送cookie数据。为了解决这个问题,我使用window.onbeforeprint事件将cache=true参数添加到我的图片的网址中。在后端,我为图像设置标题,以便在短时间内缓存。虽然这不能解决问题(因为我不相信有一个真正的修复),但它确实绕过了问题,并且IE能够打印图像。