如何在 om.vaadin.server.StreamResource 中设置 no-store

How to set no-store in om.vaadin.server.StreamResource

我有一个 vaadin 7 应用程序可以下载 csv 文件。当我设置 streamResource.setCacheTime(0); Cache-Control: no-cache set in reponse header 时 csv 文件。 但是如何在资源的响应 header 中设置 no-store。我只想停止在浏览器中保留我的 csv 文件。所以攻击者无法使用它。 以下方法无效 streamResource.getStream().setParameter("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");

这个也不行

response.setHeader("Cache-Control",  "no-cache, no-store, max-age=0, must-revalidate");

请帮忙

streamResource.getStream().setParameter(...) 不起作用,因为 getStream() 每次调用都会创建一个新实例。

你可以做的是创建一个 StreamResource 的自定义子类,它覆盖 getStream() 以在返回原始流之前对其进行进一步更改,即像这样的东西:

public class NoStoreStreamResource extends StreamResource {
  public NoStoreStreamResource(StreamSource streamSource, String filename) {
    super(streamSource, filename);
  }
  
  @Override
  public DownloadStream getStream() {
    DownloadStream ds = super.getStream();
    ds.setParameter("Cache-Control",  "no-cache, no-store, max-age=0, must-revalidate");
    return ds;
  }
}