如何在 Dart 中获取重定向 url?

Tom*_*app 3 dart flutter

在我的项目中,我发送简单的授权请求:

http.Response response = await http.get(url, headers: headers);
Run Code Online (Sandbox Code Playgroud)

作为回应,我有 cookieID 和其他信息,但我没有收到重定向 url。

我怎么能带走他?

kyc*_*won 8

正如 jamesdlin 上面提到的和这个github 问题提到的,http 的重定向默认设置为 true。为了避免重定向,followRedirects 需要设置为 false。可以按如下方式获取 redirectUri:

import 'package:http/http.dart' as http;

http.Request req = http.Request("Get", Uri.parse(YOUR_URL_HERE))..followRedirects = false;
http.Client baseClient = http.Client();
http.StreamedResponse response = await baseClient.send(req);
Uri redirectUri = Uri.parse(response.headers['location'])
Run Code Online (Sandbox Code Playgroud)


jam*_*lin 3

默认情况下,package:http底层HttpClient将自动遵循 HTTP 重定向。

如果您不想这样做,则可以通过设置HttpClientRequest.followRedirects为 来禁用它false

package:http通过暴露这一点BaseRequest.followRedirects