Java Jetty使用重写将HTTP重定向到HTTPS
我有一个嵌入式Jetty服务器,我想将请求从直接发送到,我该怎么做?我试过这个:Java Jetty使用重写将HTTP重定向到HTTPS,java,jsp,url-rewriting,jetty,Java,Jsp,Url Rewriting,Jetty,我有一个嵌入式Jetty服务器,我想将请求从直接发送到,我该怎么做?我试过这个: // Set up rewriting (HTTP -> HTTPS) RewriteHandler rewrite = new RewriteHandler(); RedirectPatternRule redirect = new RedirectPatternRule(); redirect.setPattern("http://localhost:8080/*");
// Set up rewriting (HTTP -> HTTPS)
RewriteHandler rewrite = new RewriteHandler();
RedirectPatternRule redirect = new RedirectPatternRule();
redirect.setPattern("http://localhost:8080/*");
redirect.setLocation("https://localhost:4433/");
rewrite.addRule(redirect);
并将其添加到我的处理程序中,但它不起作用。我知道这样的规则
RewriteHandler rewrite = new RewriteHandler();
RedirectPatternRule redirect = new RedirectPatternRule();
redirect.setPattern("/redirect/*");
redirect.setLocation("/redirected");
rewrite.addRule(redirect);
工作100%,但有没有办法匹配完整的URL 重写处理程序仅适用于路径 而不是方案、主机或端口 您可以使用自jetty 9.2以来内置的
jetty服务器
工件。(确保两个连接器都有有效的HttpConfiguration
设置)
。。或者
您可以使用Servlet约束将其强制为机密
请参见的答案中,Jetty不特定的更通用的方法是返回带有新URL的301:
GET /path/location.html HTTP/1.1
Host: example.com
变成
HTTP/1.1 301 Moved Permanently
Location: https://example.com/path/location.html
在Jetty和大多数服务器框架中,如果不希望通过纯文本http访问资源,只需设置响应状态并在过滤器中添加位置头,就可以实现这一点