mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-27 18:02:17 +03:00
Better follow redirection for HTTPClient
(#7157)
* Add way to force follow redirections in `HTTPClient` * Follow other client implementations about `HTTP_CODE_FOUND`; Small rewrite of `sendRequest` function of `HTTPClient` * Better names for follow redirection modes in `HTTPClient` Also changed a bit order of the enums (0 element to be DISABLED) * Rewrite `sendRequest` to remove recursion Also got rid of unnecessary `redirectCount` field. Now redirect counting and limiting is handled in `sendRequest` directly. * Use new `setFollowRedirects` of `HTTPClient` instead deprecated one. * More explanatory comment for `followRedirects_t` in HTTPClient
This commit is contained in:
committed by
GitHub
parent
1127a090ad
commit
d91f1dac36
@ -71,10 +71,10 @@ TEST_CASE("HTTP GET & POST requests", "[HTTPClient]")
|
||||
http.end();
|
||||
}
|
||||
{
|
||||
// 301 redirect with follow enabled
|
||||
// GET 301 redirect with strict RFC follow enabled
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
http.setFollowRedirects(true);
|
||||
http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
|
||||
String uri = String("/redirect301?host=")+getenv("SERVER_IP");
|
||||
http.begin(client, getenv("SERVER_IP"), 8088, uri.c_str());
|
||||
auto httpCode = http.GET();
|
||||
@ -83,7 +83,7 @@ TEST_CASE("HTTP GET & POST requests", "[HTTPClient]")
|
||||
REQUIRE(payload == "redirect success");
|
||||
}
|
||||
{
|
||||
// 301 redirect with follow disabled
|
||||
// GET 301 redirect with follow disabled
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
String uri = String("/redirect301?host=")+getenv("SERVER_IP");
|
||||
@ -92,10 +92,10 @@ TEST_CASE("HTTP GET & POST requests", "[HTTPClient]")
|
||||
REQUIRE(httpCode == 301);
|
||||
}
|
||||
{
|
||||
// 302 redirect with follow enabled
|
||||
// GET 302 redirect with strict RFC follow enabled
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
http.setFollowRedirects(true);
|
||||
http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
|
||||
String uri = String("/redirect302?host=")+getenv("SERVER_IP");
|
||||
http.begin(client, getenv("SERVER_IP"), 8088, uri.c_str());
|
||||
auto httpCode = http.GET();
|
||||
@ -104,7 +104,7 @@ TEST_CASE("HTTP GET & POST requests", "[HTTPClient]")
|
||||
REQUIRE(payload == "redirect success");
|
||||
}
|
||||
{
|
||||
// 302 redirect with follow disabled
|
||||
// GET 302 redirect with follow disabled
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
String uri = String("/redirect302?host=")+getenv("SERVER_IP");
|
||||
@ -113,10 +113,10 @@ TEST_CASE("HTTP GET & POST requests", "[HTTPClient]")
|
||||
REQUIRE(httpCode == 302);
|
||||
}
|
||||
{
|
||||
// 307 redirect with follow enabled
|
||||
// GET 307 redirect with strict RFC follow enabled
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
http.setFollowRedirects(true);
|
||||
http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
|
||||
String uri = String("/redirect307?host=")+getenv("SERVER_IP");
|
||||
http.begin(client, getenv("SERVER_IP"), 8088, uri.c_str());
|
||||
auto httpCode = http.GET();
|
||||
@ -125,7 +125,7 @@ TEST_CASE("HTTP GET & POST requests", "[HTTPClient]")
|
||||
REQUIRE(payload == "redirect success");
|
||||
}
|
||||
{
|
||||
// 307 redirect with follow disabled
|
||||
// GET 307 redirect with follow disabled
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
String uri = String("/redirect307?host=")+getenv("SERVER_IP");
|
||||
@ -134,10 +134,10 @@ TEST_CASE("HTTP GET & POST requests", "[HTTPClient]")
|
||||
REQUIRE(httpCode == 307);
|
||||
}
|
||||
{
|
||||
// 301 exceeding redirect limit
|
||||
// GET 301 exceeding redirect limit
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
http.setFollowRedirects(true);
|
||||
http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
|
||||
http.setRedirectLimit(0);
|
||||
String uri = String("/redirect301?host=")+getenv("SERVER_IP");
|
||||
http.begin(client, getenv("SERVER_IP"), 8088, uri.c_str());
|
||||
@ -145,20 +145,22 @@ TEST_CASE("HTTP GET & POST requests", "[HTTPClient]")
|
||||
REQUIRE(httpCode == 301);
|
||||
}
|
||||
{
|
||||
// POST 303 redirect with follow enabled
|
||||
// POST 303 redirect with strict RFC follow enabled
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
http.setFollowRedirects(true);
|
||||
http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
|
||||
http.begin(client, getenv("SERVER_IP"), 8088, "/redirect303");
|
||||
auto httpCode = http.POST(getenv("SERVER_IP"));
|
||||
REQUIRE(httpCode == HTTP_CODE_OK);
|
||||
String payload = http.getString();
|
||||
REQUIRE(payload == "redirect success");
|
||||
// TODO: need check for dropping: redirection should use GET method
|
||||
}
|
||||
{
|
||||
// POST 303 redirect with follow disabled
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
http.setFollowRedirects(HTTPC_DISABLE_FOLLOW_REDIRECTS);
|
||||
http.begin(client, getenv("SERVER_IP"), 8088, "/redirect303");
|
||||
auto httpCode = http.POST(getenv("SERVER_IP"));
|
||||
REQUIRE(httpCode == 303);
|
||||
@ -167,6 +169,7 @@ TEST_CASE("HTTP GET & POST requests", "[HTTPClient]")
|
||||
// 302 redirect with follow disabled
|
||||
WiFiClient client;
|
||||
HTTPClient http;
|
||||
http.setFollowRedirects(HTTPC_DISABLE_FOLLOW_REDIRECTS);
|
||||
String uri = String("/redirect302?host=")+getenv("SERVER_IP");
|
||||
http.begin(client, getenv("SERVER_IP"), 8088, uri.c_str());
|
||||
auto httpCode = http.GET();
|
||||
|
Reference in New Issue
Block a user