свойство followRedirects
Следует ли автоматически перенаправлять запросы.
Установите для этого свойства значение false, если этот запрос не должен автоматически перенаправляться. Значение по умолчанию — true.
Автоматическое перенаправление выполняется только для запросов "GET" и "HEAD" и только при следующих кодах состояния: HttpStatus.movedPermanently (301), HttpStatus.found (302), HttpStatus.movedTemporarily (302, псевдоним для HttpStatus.found), HttpStatus.seeOther (303), HttpStatus.temporaryRedirect (307) и HttpStatus.permanentRedirect (308). Для HttpStatus.seeOther (303) автоматическое перенаправление также выполняется для запросов "POST", при этом метод меняется на "GET" при переходе по перенаправлению.
Все заголовки, добавленные к запросу, будут добавлены и к запросу перенаправления, кроме конфиденциальных заголовков, таких как "Authorization", "WWW-Authenticate" и "Cookie". Эти заголовки не будут переданы при переходе по перенаправлению на домен, который не является поддоменом исходного домена и не совпадает с ним полностью. Например, при перенаправлении с "foo.com" на "foo.com" или "sub.foo.com" конфиденциальные заголовки будут переданы, но при перенаправлении на "bar.com" — нет.
Тело, отправленное вместе с запросом, не будет включено в запрос перенаправления.
Чтобы точно управлять обработкой перенаправлений, установите для этого свойства значение false и отправьте отдельный HTTP-запрос для обработки перенаправления. Например:
final client = HttpClient();
var uri = Uri.parse("http://localhost/");
var request = await client.getUrl(uri);
request.followRedirects = false;
var response = await request.close();
while (response.isRedirect) {
response.drain();
final location = response.headers.value(HttpHeaders.locationHeader);
if (location != null) {
uri = uri.resolve(location);
request = await client.getUrl(uri);
// Set the body or headers as desired.
request.followRedirects = false;
response = await request.close();
}
}
// Do something with the final response. Реализация
bool followRedirects = true;
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-io/HttpClientRequest/followRedirects.html