followRedirects 属性
getter/setter 对偶
是否自动跟随重定向。
如果此请求不应该自动跟随重定向,请将此属性设置为 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),自动重定向也会发生在将方法更改为 "GET" 后的 "POST" 请求上。
请求中添加的所有标头都将添加到重定向请求中,除非转发敏感标头,如 "Authorization"、"WWW-Authenticate" 和 "Cookie"。如果跟随重定向到不是初始域的子域匹配或精确匹配的域,则将跳过这些标头。例如,从 "foo.com" 重定向到 "foo.com" 或 "sub.foo.com" 将转发敏感标头,但不会转发到 "bar.com"。
请求中发送的任何正文都不会是重定向请求的一部分。
为了精确控制重定向处理,将此属性设置为 false
并单独进行 HTTP 请求以处理重定向。例如
final client = HttpClient();
var uri = Uri.parse("https://127.0.0.1/");
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;