當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Dart HttpClientRequest.followRedirects用法及代碼示例


dart:io 庫中HttpClientRequest.followRedirects 屬性的用法介紹如下。

用法:

bool
followRedirects
read / write

是否自動跟隨重定向。

如果此請求不應自動跟隨重定向,請將此屬性設置為 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.

相關用法


注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 followRedirects property。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。