Vaadin7中如何为om.vaadin.server.StreamResource设置no-store属性
Vaadin7 CSV下载资源新增no-store缓存配置方案
你之前的两种配置方式不生效,核心原因是Vaadin7的资源处理逻辑会根据cacheTime参数自动生成并覆盖Cache-Control响应头,你手动设置的头会被后续的框架默认逻辑覆盖。
正确实现方式如下:
重写StreamResource的getStream()方法,在返回自定义DownloadStream对象时直接设置完整的缓存控制头,同时不要调用setCacheTime(0)避免触发框架的自动覆盖逻辑:
// 构建CSV下载资源 StreamResource csvResource = new StreamResource("export.csv", new StreamResource.StreamSource() { @Override public InputStream getStream() { // 替换为实际的CSV文件输入流生成逻辑 return new ByteArrayInputStream(csvContent.getBytes(StandardCharsets.UTF_8)); } }) { @Override public DownloadStream getStream() { DownloadStream downloadStream = super.getStream(); // 设置完整的缓存控制头 downloadStream.setParameter("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate"); // 可选补充兼容旧浏览器的缓存头 downloadStream.setParameter("Pragma", "no-cache"); downloadStream.setParameter("Expires", "0"); return downloadStream; } }; // 不要调用setCacheTime(0),否则框架会重写Cache-Control头覆盖自定义配置
内容的提问来源于stack exchange,提问作者Hasintha Samith Randika
相关产品推荐
相关产品推荐

