Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sesemomo
spring-framework
提交
3eac2dd3
S
spring-framework
项目概览
sesemomo
/
spring-framework
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3eac2dd3
编写于
5月 24, 2018
作者:
R
Rossen Stoyanchev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support X-Forwarded-Ssl
Issue: SPR-16863
上级
85e86348
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
30 addition
and
1 deletion
+30
-1
spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java
...va/org/springframework/web/util/UriComponentsBuilder.java
+13
-0
spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java
...pringframework/web/filter/ForwardedHeaderFilterTests.java
+2
-1
spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java
...g/springframework/web/util/UriComponentsBuilderTests.java
+15
-0
未找到文件。
spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java
浏览文件 @
3eac2dd3
...
...
@@ -743,6 +743,10 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
scheme
(
matcher
.
group
(
1
).
trim
());
port
(
null
);
}
else
if
(
isForwardedSslOn
(
headers
))
{
scheme
(
"https"
);
port
(
null
);
}
matcher
=
FORWARDED_HOST_PATTERN
.
matcher
(
forwardedToUse
);
if
(
matcher
.
find
())
{
adaptForwardedHost
(
matcher
.
group
(
1
).
trim
());
...
...
@@ -754,6 +758,10 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
scheme
(
StringUtils
.
tokenizeToStringArray
(
protocolHeader
,
","
)[
0
]);
port
(
null
);
}
else
if
(
isForwardedSslOn
(
headers
))
{
scheme
(
"https"
);
port
(
null
);
}
String
hostHeader
=
headers
.
getFirst
(
"X-Forwarded-Host"
);
if
(
StringUtils
.
hasText
(
hostHeader
))
{
...
...
@@ -780,6 +788,11 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
return
this
;
}
private
boolean
isForwardedSslOn
(
HttpHeaders
headers
)
{
String
forwardedSsl
=
headers
.
getFirst
(
"X-Forwarded-Ssl"
);
return
StringUtils
.
hasText
(
forwardedSsl
)
&&
forwardedSsl
.
equalsIgnoreCase
(
"on"
);
}
private
void
adaptForwardedHost
(
String
hostToUse
)
{
int
portSeparatorIdx
=
hostToUse
.
lastIndexOf
(
':'
);
if
(
portSeparatorIdx
>
hostToUse
.
lastIndexOf
(
']'
))
{
...
...
spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java
浏览文件 @
3eac2dd3
...
...
@@ -33,6 +33,7 @@ import org.springframework.mock.web.test.MockHttpServletRequest;
import
org.springframework.mock.web.test.MockHttpServletResponse
;
import
static
org
.
junit
.
Assert
.*;
import
static
org
.
mockito
.
Mockito
.*;
/**
* Unit tests for {@link ForwardedHeaderFilter}.
...
...
@@ -458,7 +459,7 @@ public class ForwardedHeaderFilterTests {
};
MockHttpServletResponse
response
=
new
MockHttpServletResponse
();
FilterChain
filterChain
=
new
MockFilterChain
(
new
HttpServlet
()
{}
,
this
.
filter
,
filter
);
FilterChain
filterChain
=
new
MockFilterChain
(
mock
(
HttpServlet
.
class
)
,
this
.
filter
,
filter
);
filterChain
.
doFilter
(
request
,
response
);
return
response
.
getRedirectedUrl
();
...
...
spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java
浏览文件 @
3eac2dd3
...
...
@@ -426,6 +426,21 @@ public class UriComponentsBuilderTests {
assertEquals
(-
1
,
result
.
getPort
());
}
@Test
// SPR-16863
public
void
fromHttpRequestWithForwardedSsl
()
{
MockHttpServletRequest
request
=
new
MockHttpServletRequest
();
request
.
setScheme
(
"http"
);
request
.
setServerName
(
"example.org"
);
request
.
setServerPort
(
10080
);
request
.
addHeader
(
"X-Forwarded-Ssl"
,
"on"
);
HttpRequest
httpRequest
=
new
ServletServerHttpRequest
(
request
);
UriComponents
result
=
UriComponentsBuilder
.
fromHttpRequest
(
httpRequest
).
build
();
assertEquals
(
"https"
,
result
.
getScheme
());
assertEquals
(
"example.org"
,
result
.
getHost
());
assertEquals
(-
1
,
result
.
getPort
());
}
@Test
public
void
fromHttpRequestWithForwardedHostWithForwardedScheme
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录