Fel*_*ral 7 spring caching spring-security
我有一个应用程序,并使用spring的控制器映射将图像加载到我的用户.(InputStream,响应等).
在我的控制器中,我将标头设置为缓存控制,基于文件等等.但是总是存在pragma:no-cache和Cache-Control:所有请求中的"max-age = 0",这取代了我的响应设置.
我正在努力解决这个问题,但没有任何作用.
我已经阅读了所有页面并尝试了我发现的所有内容:http: //docs.spring.io/autorepo/docs/spring-security/3.2.0.CI-SNAPSHOT/reference/html/headers.html
我的spring security.xml有:
<security:headers disabled="true"/>
Run Code Online (Sandbox Code Playgroud)
任何人都有一个好主意来解决这个问题?
请记住,要加载我需要通过控制器加载的图像,我从不直接调用静态.
aha*_*aha 16
该Cache-Control头可以在每个动作的基础由重写它们进行控制HttpServletResponse:
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public String someAction(HttpServletResponse response) {
response.setHeader("Cache-Control", "no-transform, public, max-age=86400");
// ...
}
Run Code Online (Sandbox Code Playgroud)
无需摆弄Spring Security配置.
Gri*_*ory 12
如果使用基于Java的配置,可以通过以下方式禁用缓存控制标头:
@Configuration
@EnableWebMvcSecurity
class SpringWebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final HttpSecurity http) throws Exception {
http.headers().cacheControl().disable();
}
}
Run Code Online (Sandbox Code Playgroud)
这将删除CacheControlHeadersWriter,Spring将不再编写缓存控制头.
根据您链接到的Spring Security 参考文献(3.2.0),
所有默认标题都可以使用没有子元素的元素轻松添加
简单地添加headers本身将打开所有子元素(例如缓存控制,xxs,...)。要么根本不包含标题,要么明确指定要启用哪些子元素。
顺便说一句,我不认为disabled这是标题的属性(对于 3.2.0)。如果您使用的是4.0 版本,则还有一个disabled属性以及disabled-defaults,这可能是您想要的。
| 归档时间: |
|
| 查看次数: |
15608 次 |
| 最近记录: |