# HTTP

所有基于 HTTP 的通信,包括静态资源 (opens new window),都应该受到using TLS (opens new window)的保护。

作为一个框架, Spring 安全性不处理 HTTP 连接,因此不直接提供对 HTTPS 的支持。然而,它确实提供了许多有助于 HTTPS 使用的功能。

# 重定向到 HTTPS

当客户端使用 HTTP 时, Spring 安全性可以被配置为将ServletWebFlux环境重定向到 HTTPS。

# 严格的运输安全

Spring 安全性为严格的运输安全提供支持,并在默认情况下启用它。

# 代理服务器配置

在使用代理服务器时,重要的是要确保你已经正确地配置了应用程序。例如,许多应用程序将有一个负载均衡器,该负载均衡器通过在https://192.168.1:8080 (opens new window)处将请求转发到应用程序服务器来响应https://example.com/ (opens new window)的请求。如果没有适当的配置,应用程序服务器将不知道负载均衡器的存在,并将请求视为https://192.168.1:8080 (opens new window)是由客户机请求的。

要解决这个问题,你可以使用RFC 7239 (opens new window)来指定正在使用负载均衡器。要使应用程序意识到这一点,你需要配置你的应用程序服务器来了解 X 转发头。例如, Tomcat 使用Remoteipvalve (opens new window), Jetty 使用ForwardeDrequestCustomizer (opens new window)。或者, Spring 用户可以利用ForwardedHeaderFilter (opens new window)

Spring 引导用户可以使用server.use-forward-headers属性来配置应用程序。有关更多详细信息,请参见Spring Boot documentation (opens new window)