gpt4 book ai didi

java - 如何配置嵌入式 Jetty (v9) 为特定资源文件设置特定 header ?

转载 作者:行者123 更新时间:2023-11-30 08:03:21 25 4
gpt4 key购买 nike

是否可以配置嵌入式 Jetty (v9) 以仅为特定资源文件类型设置特定 header 。

目前,我没有做任何特殊的事情来处理静态资源,所以大概 Jetty 有一些默认的处理程序设置来做这件事。是否可以使用一些自定义设置扩展或重载该默认处理程序,以便我可以仅为 html 文件设置 Cache-Control header ?

我正在尝试完成类似于以下 Apache 配置的操作:

<Files "*.html">
Header set Cache-Control "public, max-age=900"
</Files>

...在我的 Jetty 设置中:

public static void main(String[] args) throws Exception {
Server server = new Server(443);
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar("war");
server.setHandler(webapp);
...
...
}

实际上,如果这可以在 jetty.xml 或其他一些配置文件中完成,那将是更可取的。

最佳答案

您的解决方案帮助我以完全嵌入式的方式实现了这一点,而且效果很好。

我正在使用 jetty 9.2.19 org.eclipse.jetty.rewrite.handler.RewriteHandler。我将我的 ResourceHandler 包装在这个 RewriteHandler 中以设置特定的 http header (此处为 Cache-Control):

RewriteHandler rewriteHandler = new RewriteHandler();
rewriteHandler.addRule(new Rule()
{
@Override
public String matchAndApply(String target, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException
{
// you can check the target for its path or filetype or whatever
if((target.endsWith(".woff2")) || ... || (target.endsWith(".jpg")))
{
httpServletResponse.setHeader("Cache-Control", "public, max-age=2592000");
}
return null;
}
});
// set the RewriteHandler around the ResourceHandler
rewriteHandler.setHandler(resource_handler);
// set the RewriteHandler to the Webservers Handlerlist...

关于java - 如何配置嵌入式 Jetty (v9) 为特定资源文件设置特定 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36339362/

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