gpt4 book ai didi

spring - 我的 Spring Boot 应用程序能否仅在某些 @RequestMappings 上运行 HTTPS?

转载 作者:太空宇宙 更新时间:2023-11-03 14:33:19 24 4
gpt4 key购买 nike

我正在开发一个用于智能家居的 Spring 应用程序。我得到了向 Spring 应用程序发送数据的微 Controller ,但由于空间和处理速度不够,我无法在它们上实现 SSL。

在客户端,我想使用 HTTPS,因为客户端运行在 Android 上。

我能否将某些请求映射到 HTTP 而将其他请求映射到 HTTPS?

最佳答案

我们不能从 spring boot 应用程序打开两个端口,一个在 443 上,另一个在 80 上。这样,在 https 上它监听 443,在 http 上监听 80。所以在你的应用程序中,你可以在 url 上配置 http 以使用 80 port 和 https 使用 443 端口。

我们可以通过更改 application.properties 来做到这一点:

#Https settings
server.port=443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password = secret
server.ssl.key-password = secret
#Http setting
server.http.port=80

我给出了一个使用 Undertow 服务器的示例,您可以在任何应用程序服务器(tomcat 等)上执行此操作:

@SpringBootApplication
public class Boot {

@Value("${server.http.port:0}")
private Integer httpPort;

public static void main(String[] args) throws Exception {
SpringApplication.run(Boot.class, args);
}

@Bean
public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory();
factory.addBuilderCustomizers(new UndertowBuilderCustomizer() {

public void customize(Builder builder) {
// worker options
builder.setWorkerThreads(500);
builder.setWorkerOption(Options.TCP_NODELAY, true);

// io options
builder.setIoThreads(Runtime.getRuntime().availableProcessors() * 2);

// socket options
builder.setSocketOption(Options.BACKLOG, 10000);
builder.setSocketOption(Options.TCP_NODELAY, true);
builder.setSocketOption(Options.REUSE_ADDRESSES, true);

// server options
builder.setServerOption(UndertowOptions.ALWAYS_SET_KEEP_ALIVE, false);
builder.setServerOption(UndertowOptions.ALWAYS_SET_DATE, true);
builder.setServerOption(UndertowOptions.RECORD_REQUEST_START_TIME, false);

// Done to keep both http and https port open at production
if (httpPort > 0)
builder.addHttpListener(httpPort, "0.0.0.0");
}

});
return factory;
}

}

关于spring - 我的 Spring Boot 应用程序能否仅在某些 @RequestMappings 上运行 HTTPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50613018/

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