在使用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的过程。

image.png

如果有一个反向代理服务器

image.png

There can be several options for paraphrasing “原因” in Chinese, depending on the context. Here’s one possible option:

解释

image.png

解决方案

image.png

实施

反向代理服务器的设置

不讨论在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

技术文档

 

广告
将在 10 秒后关闭
bannerAds