gpt4 book ai didi

java - Spring Boot Web 应用程序没有缓存控制 header

转载 作者:行者123 更新时间:2023-12-04 09:17:47 26 4
gpt4 key购买 nike

我正在使用 Spring Boot 应用程序,需要通过禁用网页之间的缓存来启用安全性。据我了解,默认情况下,Spring Security 会为我们设置特定的缓存控制 header 值,而无需我们进行任何配置。

但对于我的 Web 应用程序,不存在以下响应 header 。缓存控制”、“无存储”Pragma", "无缓存"过期", "0"我尝试使用拦截器(实现 HandlerInterceptor)设置它们并在 preHandle、postHandle 和 afterCompletionMethod 中添加以下代码。

    response.setHeader("Cache-Control", "no-store"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setHeader("Expires", "0"); // Proxies.

虽然控制了这些方法并且设置了 header ,但是当我检查网络浏览器时,我没有看到这些 header 。

可能是什么原因?

最佳答案

有不同类型的设置标题。

我建议使用过滤器或配置来设置它。

配置

默认情况下,spring-boot 设置安全 header 。使用 .defaultsDisabled() 您可以禁用它们并可以选择性地激活所需的 header 。

@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
// ...
.headers()
// do not use any default headers unless explicitly listed
.defaultsDisabled()
.cacheControl();
}
}

将标题设置为以下设置:

Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0

有关配置的更多详细信息,请参阅文档。 https://docs.spring.io/spring-security/site/docs/4.0.x/reference/html/headers.html

或者您可以使用过滤器。

过滤器

@WebFilter("/filter-response-header/*")
public class AddResponseHeaderFilter implements Filter {

@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletResponse.setHeader(
"Cache-Control", "no-store");
httpServletResponse.setHeader(
"Pragma", "no-cache");
httpServletResponse.setHeader(
"Expires", "0");
chain.doFilter(request, response);
}

对于单个响应

HttpServletResponse:

HttpServletResponse response
response.addHeader("Cache-Control", "no-store");
response.addHeader("Pragma", "no-cache");
response.addHeader("Expires", "0");

更多信息请看这里:https://www.baeldung.com/spring-response-header

关于java - Spring Boot Web 应用程序没有缓存控制 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63153944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com