1

Dio 曾经允许在 baseOptions 中设置默认 cookie,例如 this。

final BaseOptions dioBaseOptions = BaseOptions(
    baseUrl: 'http://192.168.1.19',
    headers: {
      "Host": "api.example.test",
      "Content-Type": "application/json",
    },
    cookies: [
      Cookie('XDEBUG_SESSION', 'PHPSTORM'),
    ],
  );

随着 API 的更新,这似乎不再是这种情况,我们需要使用拦截器(或者有替代方案)?尝试将上面的代码调整为新的 Dio API 我有以下内容,除了我看不到如何将 cookie 添加到 jar 中。

    var dio = Dio();
    dio.interceptors.add(InterceptorsWrapper(onRequest: (RequestOptions options) async {
      var customHeaders = {
        "Host": "api.example.test",
        "Content-Type": "application/json",
      };
      options.headers.addAll(customHeaders);
      return options;
    }));

    var cookieJar=CookieJar();
    /// I was expecting something like .add(Cookie(...))
    dio.interceptors.add(CookieManager(cookieJar));
4

1 回答 1

0

看起来唯一的方法是在标题中手动写入cookie

  final BaseOptions dioBaseOptions = BaseOptions(
    baseUrl: 'http://192.168.1.19',
    headers: {
      'Host': "api.radio.test",
      'Content-Type': 'application/json',
      'Cookie': 'XDEBUG_SESSION=PHPSTORM',
    },
  );
于 2020-08-03T19:16:23.513 回答