默认情况下,springboot配置了https之后就无法再使用http了,但是我们开发测试阶段可能就是需要使项目同时支持http和https,这时候就需要对项目做一些额外配置了。这一小节的内容主要就是介绍一下SpringBoot的项目如何同时支持http和https。
配置https
配置https需要先生成证书,关于如何生成证书可以参考另一篇文章springboot设置自签名https证书,证书生成了之后将证书导入到resources目录下,然后配置application.properties
server.port=8080
#证书的路径.
server.ssl.key-store=src/main/resources/ssl-key.p12
#证书密码,请修改为您自己证书的密码.
server.ssl.key-store-password=***
#秘钥库类型
server.ssl.keyStoreType=PKCS12
#证书别名
server.ssl.keyAlias=sslserver
启动项目,使用ApiFox或者postman请求接口地址。
配置http
配置完了https之后再看一下如何同时支持http,配置也是比较简单的,需要在启动类上做一些处理。
@SpringBootApplication
class ShiciApplication{
private val port: Int = 8081
@Bean
fun servletContainer(): ServletWebServerFactory? {
val tomcat = TomcatServletWebServerFactory()
// 配置http
val connector = Connector("org.apache.coyote.http11.Http11NioProtocol")
connector.port=port
tomcat.addAdditionalTomcatConnectors(connector) // 添加http
return tomcat
}
}
fun main(args: Array<String>) {
runApplication<ShiciApplication>(*args)
}
需要注意的是,这里配置的端口号不能和配置文件填的端口号一样,因为配置文件里写的是https的端口号,这里配置的是http端口号,如果端口号相同会导致项目启动失败。
访问接口
使用http访问接口 http://127.0.0.1:8081/shici/all
使用https访问接口 https://127.0.0.1:8080/shici/all