Spring cloud gateway 处理跨域问题
Spring cloud gateway 拦截请求404 等HTTP 状态码
Spring cloud gateway 修改response 截断问题,乱码问题解决
Spring cloud gateway 详解和配置使用(文章较长)
Spring cloud Gateway 指定执行过滤器 (在配置文件中配置所需要过滤器)
话不多说,直接上硬货:
这是gateway 官网的配置截图
这个配置简单,但是我们需要同时支持http 和https
目前这个问题官方还没有正式解决
https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/#tls-and-ssl
https://github.com/spring-cloud/spring-cloud-gateway/issues/1103
民间人士,想到的办法是 在启动一个Netty 监听另外一个端口 如:8080,这个端口是不带 s 的也就是 http
当访问8080时 跳转到配置https 的如8443端口
经过一番查找
https://github.com/spring-projects/spring-boot/issues/12035
https://stackoverflow.com/questions/49045670/spring-webflux-redirect-http-to-https/53000573#53000573
具体实现:
package cn.com.test.gateway.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import reactor.core.publisher.Mono;
import javax.annotation.PostConstruct;
import java.net.URI;
import java.net.URISyntaxException;
@Configuration
public class HttpToHttpsRedirectConfig {
@Value("${server.http.port}")
private int httpPort;
@Value("${server.port}")
private int serverPort;
@PostConstruct
public void startRedirectServer() {
NettyReactiveWebServerFactory httpNettyReactiveWebServerFactory = new NettyReactiveWebServerFactory(httpPort);
httpNettyReactiveWebServerFactory.getWebServer((request, response) -> {
URI uri = request.getURI();
URI httpsUri;
try {
httpsUri = new URI("https", uri.getUserInfo(), uri.getHost(), serverPort, uri.getPath(), uri.getQuery(), uri.getFragment());
} catch (URISyntaxException e) {
return Mono.error(e);
}
response.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
response.getHeaders().setLocation(httpsUri);
return response.setComplete();
}).start();
}
}
yml 配置文件配置:
分为俩个端口号,server.port 是配置https 的端口, http.port 是监听的端口
server:
http:
port: 4321
port: 1234
ssl:
enabled: true
key-alias: scg
key-store: classpath:ssl/test.pfx
key-store-password: 6540CNd4Whw
keyStoreType: PKCS12
目录结构:
启动后访问,不带s 的4321端口会转发到1234端口。
记得双击摸摸哒!
一键三连摸摸哒!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)