当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。