如何在 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;
}
}
我有一个 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;
}
}