GWT - 阻止PDF文件在IE中缓存?

时间:2015-06-25 23:00:54

标签: java pdf caching iframe gwt

我有一个GWT Web App(需要登录),它调用Servlet上的方法(在Tomcat中运行)来生成PDF文件。 Servlet返回文件的URL并在iFrame中打开PDF。

Frame frame = new Frame(reportUrl);
frame.show();

关闭框架(或浏览器)后,会发出删除服务器端生成的文件的请求。现在问题出在这里。如果我退出Web应用程序,并在IE中打开一个新选项卡,它会在历史记录中显示用于显示PDF的URL。理想情况下,此文件不再可访问,因为它已在服务器上删除,并且用户不再登录,但PDF仍显示在新选项卡中。我认为这是因为正在缓存PDF文件。

我无法在Chrome中重现此行为,因此我认为该文件要么不在Chrome中缓存,要么Chrome只是稍微处理不同的事情。简而言之,如何在用户退出Web应用程序后确保无法再访问文件/网址?

1 个答案:

答案 0 :(得分:1)

理论上这是不可能的,因为您无法远程清除客户端缓存。此外,用户可能已使用wget或其他任何内容来下载文件,因此您无法假设会话过期后100%无法访问信息。

话虽如此,HTTP响应头中的缓存提示可以在某种程度上引导(行为良好的)客户端缓存。一如既往,实现与浏览器不同。您可以直接在Java中从servlet设置HTTP标头,也可以从Apache HTTPD添加它们,例如为所有PDF下载指定缓存标头。

HTTP中的缓存标头有很多资源,这里有一个很好的资源:http://www.mobify.com/blog/beginners-guide-to-http-cache-headers/

我还看到,HTTPS连接导致IE在缓存的内容中更加严格,不确定这是否与您相关/可选。