Java Jetty使用重写将HTTP重定向到HTTPS

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/*");

我有一个嵌入式Jetty服务器,我想将请求从直接发送到,我该怎么做?我试过这个:

    // 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访问资源,只需设置响应状态并在过滤器中添加位置头,就可以实现这一点