Skip to content

Commit d359fff

Browse files
committed
test: 新增针对跨域功能的单元测试
1 parent d36e036 commit d359fff

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

src/test/java/top/meethigher/proxy/http/ReverseHttpProxyBugTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import java.time.Duration;
1212
import java.util.concurrent.TimeUnit;
13+
import java.util.concurrent.locks.LockSupport;
1314

1415
public class ReverseHttpProxyBugTest {
1516

@@ -93,4 +94,51 @@ public void reqClose() throws Exception {
9394

9495
TimeUnit.SECONDS.sleep(20);
9596
}
97+
98+
99+
/**
100+
* 跨域第一种情况
101+
* 1. 响应头不允许跨域
102+
*/
103+
@Test
104+
public void testAllowCros() throws Exception {
105+
// 转发一个不允许跨域的后端 直接以https://meethigher.top
106+
ReverseHttpProxy.create(vertx)
107+
.port(4321)
108+
.addRoute(new ProxyRoute()
109+
.setSourceUrl("/*")
110+
.setTargetUrl("https://meethigher.top")
111+
.setFollowRedirects(false)
112+
.setCorsControl(new ProxyRoute.CorsControl().setEnable(true).setAllowCors(true)))
113+
.start();
114+
LockSupport.park();
115+
}
116+
117+
/**
118+
* 跨域第二种情况
119+
* 1. 响应头不允许跨域
120+
* 2. 后端拦截OPTIONS
121+
*/
122+
@Test
123+
public void testAllowCros2() throws Exception {
124+
// 后端
125+
Vertx.vertx().createHttpServer().requestHandler(serverReq -> {
126+
if (serverReq.method().name().equalsIgnoreCase("options")) {
127+
serverReq.response().setStatusCode(403).end();
128+
} else {
129+
serverReq.response().setStatusCode(200).end();
130+
}
131+
}).listen(889);
132+
133+
ReverseHttpProxy.create(vertx)
134+
.port(4321)
135+
.addRoute(new ProxyRoute()
136+
.setSourceUrl("/*")
137+
.setTargetUrl("http://127.0.0.1:889")
138+
.setFollowRedirects(false)
139+
.setCorsControl(new ProxyRoute.CorsControl().setEnable(true).setAllowCors(true))
140+
)
141+
.start();
142+
LockSupport.park();
143+
}
96144
}

0 commit comments

Comments
 (0)