我已使用自签名证书及其正常工作将“ http”(端口8080)流量重定向到“ https”(端口8443)。但邮寄电话显示405(不允许使用方法)错误。
这是我用于重定向的代码
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(redirectConnector());
return tomcat;
}
private Connector redirectConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8443);
return connector;
}
这是我使用的配置,
server.port=8443
server.ssl.key-alias=selfsigned_localhost_sslserver
server.ssl.key-password=changeit
server.ssl.key-store=classpath:ssl-server.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS
HTTP通过发送带有新地址的Location
标头来重定向工作。浏览器将使用GET遵循此重定向。您无法重定向POST请求,因为POST正文(例如数据)将丢失。
您需要使用正确的地址。
您可以在URL(例如,//myhost.com/foo/bar
)中省略模式,因为那些相对协议的链接始终会选择当前站点的协议。
但是,根据您的情况,端口也会更改。因此,我建议包括完整的URL并从某种变量中获取地址。