删除“ Expires” HTTP标头用于StreamedFiles

问题描述

在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
    }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...