feat: 新增followRedirectsCookie配置,支持开启自动重定向携带cookie

This commit is contained in:
xingwan
2023-03-08 17:30:51 +08:00
parent 11e3d7acf2
commit 17647af98d
4 changed files with 88 additions and 6 deletions

View File

@@ -9,6 +9,8 @@ import cn.hutool.core.util.CharsetUtil;
import org.junit.Ignore;
import org.junit.Test;
import java.net.CookieManager;
import java.net.HttpCookie;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -169,6 +171,33 @@ public class HttpRequestTest {
Console.log(execute.getStatus(), execute.header(Header.LOCATION));
}
@Test
@Ignore
public void followRedirectsCookieTrueTest() {
final String url = "http://localhost:8888/redirect1";
CookieManager cookieManager = new CookieManager();
HttpRequest.setCookieManager(cookieManager);
HttpResponse execute = HttpRequest.get(url)
.setMaxRedirectCount(20)
.setFollowRedirectsCookie(true)
.execute();
List<HttpCookie> cookies = cookieManager.getCookieStore().getCookies();
Console.log(execute.getStatus(), cookies);
}
@Test
@Ignore
public void followRedirectsCookieFalseTest() {
final String url = "http://localhost:8888/redirect1";
CookieManager cookieManager = new CookieManager();
HttpRequest.setCookieManager(cookieManager);
HttpResponse execute = HttpRequest.get(url)
.setMaxRedirectCount(20)
.execute();
List<HttpCookie> cookies = cookieManager.getCookieStore().getCookies();
Console.log(execute.getStatus(), cookies);
}
@Test
@Ignore
public void addInterceptorTest() {

View File

@@ -0,0 +1,29 @@
package cn.hutool.http.server;
import cn.hutool.core.lang.Console;
import cn.hutool.http.Header;
import cn.hutool.http.HttpUtil;
public class RedirectServerTest {
public static void main(String[] args) {
HttpUtil.createServer(8888).addAction("/redirect1", (request, response) -> {
response.addHeader(Header.LOCATION.getValue(),"http://localhost:8888/redirect2");
response.addHeader(Header.SET_COOKIE.getValue(),"redirect1=1; path=/; HttpOnly");
response.send(301);
}).addAction("/redirect2", (request, response) -> {
response.addHeader(Header.LOCATION.getValue(),"http://localhost:8888/redirect3");
response.addHeader(Header.SET_COOKIE.getValue(), "redirect2=2; path=/; HttpOnly");
response.send(301);
}).addAction("/redirect3", (request, response) -> {
response.addHeader(Header.LOCATION.getValue(),"http://localhost:8888/redirect4");
response.addHeader(Header.SET_COOKIE.getValue(),"redirect3=3; path=/; HttpOnly");
response.send(301);
}).addAction("/redirect4", (request, response) -> {
String cookie = request.getHeader(Header.COOKIE);
Console.log(cookie);
response.sendOk();
}).start();
}
}