我想在某些端点上启用http,在另一组端点上启用https。
我得到了一些解决方案,比如通过application.properties
配置https,通过编程方式创建一个额外的连接器配置http,但是所有结果都为所有端点启用了http和https。
有人能告诉我如何使用https配置某些端点,以及使用http配置某些端点吗?
我想在某些端点上启用http,在另一组端点上启用https。
我得到了一些解决方案,比如通过application.properties
配置https,通过编程方式创建一个额外的连接器配置http,但是所有结果都为所有端点启用了http和https。
有人能告诉我如何使用https配置某些端点,以及使用http配置某些端点吗?
1条答案
按热度按时间soat7uwm1#
我为我使用的Jettyservlet计算出了这一点。如果您使用默认的TomCat servlet,您将不得不做一些类似的工作,我想这对TomCat有效。
首先,我有一个ssl端口作为默认端口。要允许http,您需要在配置中配置一个额外的http端口。然后,您需要添加一个服务器处理程序。您可以添加处理程序SecuredRedirectHandler将所有http请求重定向到https端口。由于我们不想重定向所有http请求,因此我们创建了自己的CustomRedirectHandler,它扩展了SecuredRedirectHandler。
在我们的CustomRedirectHandler中,我们可以检查请求的端点是否在我们的“允许的http”数组中。如果它已经请求了https或者被允许http,那么我们什么也不做,否则重定向到https。我的示例只允许http用于以“/.well-known/acme-challenge/”开头的端点,以允许例如对http://example.com/.well-known/acme-challenge/TOKEN的请求。