Spec-Zone.ru › Dart 2

dart:io

свойство followRedirects

bool 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API