我注意到,每当我执行POST请求并在Spring中重定向时,都会将其重定向到GET请求。是否有任何设置可以关闭此行为?我希望将POST重定向到POST。
我需要它有两个原因:
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@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(getHttpConnector());
return tomcat;
}
private Connector getHttpConnector() {
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setScheme("http");
connector.setSecure(false);
...
connector.setPort(httpPort);
...
connector.setRedirectPort(httpsPort);
return connector;
}
使用在线身份验证,一切都很好。用户通过HTTP,重定向到HTTPS,显示登录页面。身份验证通过HTTPS进行。
API身份验证出现问题。我需要一种直接从url验证用户身份的方法。例如:[POST] http://myapp/api 凭证信息在请求正文中传递。该请求被重定向到HTTPS,但是主体丢失了。您是否认为在这种情况下启用HTTP是不安全的,我们应该辞职吗?
return new ModelAndView("forward:/" + action + "?" + extraParams + bodyParams);
这行得通,但是我可以想象在某些情况下主体会太大而无法通过url中的GET传递。
技术: 春季启动:2.0.6