问题描述
在micronaut过滤器中,我指定了自己的标头,例如G。我使用“ max-age”指令设置“ Cache-Control”标头。因此,我想删除“ Expires”标头,因为通过使用“ Cache-Control”,“ Expires”标头被忽略了1。
从过滤器返回StreamedFile时,“过期”和“日期”标头是由FileTypeHandler 2设置的,我不知道该如何更改。
是否可以更改此设置?
示例:
@Filter("/**")
public class MyFilter implements HttpServerFilter {
@Inject
ImageService imageService;
@Override
public Publisher<MutableHttpResponse<?>> doFilter(HttpRequest<?> request,ServerFilterChain chain) {
File image = imageService.getImage(request);
return Publishers.just(
HttpResponse.ok(new StreamedFile(new FileInputStream(image),MediaType.IMAGE_JPEG_TYPE))
.header("Cache-Control","max-age=31449600")
.header("Access-Control-Allow-Methods","GET")
.header("Referrer-Policy","same-origin")
);
}
}
解决方法
不确定为什么要从过滤器返回文件
如果只是您发现麻烦您生成此标头的方法,则可以覆盖它:
@Singleton
@Replaces(FileTypeHandler.class)
public class CustomFileTypeHandler extends FileTypeHandler {
public CustomFileTypeHandler(FileTypeHandlerConfiguration configuration) {
super(configuration);
}
@Override
protected void setDateAndCacheHeaders(MutableHttpResponse response,long lastModified) {
//do nothing
}
}