在使用Spring Boot时创建重定向URL时需要反向代理服务器
总结
当使用Spring Boot作为应用服务器(AP服务器)运行时,当Web页面发生重定向时,会基于请求URL构建重定向目标URL。如果客户端和AP服务器之间存在反向代理服务器,由于AP服务器只能引用反向代理创建的URL,因此无法创建客户端所需的重定向URL。要解决这个问题,在反向代理将请求转发给AP服务器时,需要添加HTTP头”Forwarded”和”X-Forwarded-“,将客户端请求URL所使用的协议(http或https)、域名和端口号等信息传递给AP服务器。
问题
首先,解释一下Spring Boot的重定向处理。
Spring Boot的重定向处理
以下是创建Spring Boot重定向URL的过程。
如果有一个反向代理服务器
There can be several options for paraphrasing “原因” in Chinese, depending on the context. Here’s one possible option:
解释
解决方案
实施
反向代理服务器的设置
不讨论在NGINX中配置添加HTTP头的设定。
AP服务器的配置是使用”Spring Boot”。
定义以下的Bean。通过这个配置,Spring Boot将在创建重定向URL时参考由反向代理发送的HTTP头部“Forwarded”和“X-Forwarded-〇〇”。
@Bean
public ForwardedHeaderFilter forwardedHeaderFilter() {
return new ForwardedHeaderFilter();
}
为什么Spring Boot默认情况下不会引用HTTP头?
这是因为HTTP头部伪造很容易,并且可能会成为安全漏洞。因此,在Spring Boot中,需要明确指定读取”Forwarded”和”X-Forwarded-〇〇”。
借鉴
参考资料
-
- mdn web docs – 開発者向けのウェブ技術 > HTTP > HTTP ヘッダー > Forwarded
- SPRING FRAMEWORK – クラス ForwardedHeaderFilter
技术文档