我正在使用嵌入式 Jetty 构建沙箱 RESTful API。我的概念验证设计:一个简单的嵌入式码头服务器,它 (1) 接受 SSL 端口上的连接,(2) 使用 ContextHandlerCollection 根据 URI 前缀调用正确的处理程序。
我的原始测试使用简单的非 SSL 连接,似乎运行良好(注意,附录中的导入代码和助手 HelloHandler 类)。
public static void main(String[] args) throws Exception {
Server server = new Server(12000);
ContextHandler test1Context = new ContextHandler();
test1Context.setContextPath("/test1");
test1Context.setHandler(new HelloHandler("Hello1"));
ContextHandler test2Context = new ContextHandler();
test2Context.setContextPath("/test2");
test2Context.setHandler(new HelloHandler("Hello2"));
ContextHandlerCollection contextHandlers = new ContextHandlerCollection();
contextHandlers.setHandlers(new Handler[] { test1Context, test2Context });
server.setHandler(contextHandlers);
server.start();
server.join();
}
Run Code Online (Sandbox Code Playgroud)
但是,在对此进行测试时,我忽略了当我省略尾部正斜杠时发生浏览器重定向的情况,因此http://localhost:12000/test1 被重定向到http://localhost:12000/test1/. (FWIW,该站点稍后将转化为 4 个多小时的故障排除)。
当我切换到 HTTPS SSL 连接时,一切都出错了。代码如下:
public static void main(String[] args) …Run Code Online (Sandbox Code Playgroud)