当您使用春季会话时,例如将会话保留在reddis中时,这确实是自动完成的。Cookie的创建方式是检查请求是否通过HTTPS发出并相应地设置安全:org.springframework.session.web.http.CookieHttpSessionStrategy
CookieHttpSessionStrategy#createSessionCookie
sessionCookie.setSecure(request.isSecure());
如果不使用 spring-session,则可以使用 .使用应用程序属性,根据配置文件将其设置为 true/false。ServletContextInitializer
@Bean
public ServletContextInitializer servletContextInitializer(@Value("${secure.cookie}") boolean secure) {
return new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.getSessionCookieConfig().setSecure(secure);
}
};
}
application.properties(在开发中使用,当配置文件“prod”未处于活动状态时):
secure.cookie=false
application-prod.properties(仅当配置文件'prod'处于活动状态时使用,覆盖 application.properties 中的值):
secure.cookie=false
在 prod 服务器上使用以下命令启动应用程序:
--spring.profiles.active=prod
如果您到目前为止还没有使用配置文件,那么听起来像是一些努力,但是无论如何,您都可能需要一个prod environment的配置文件,所以它真的值得。