You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何保存并传递Cookie?适配网页设计的后端API

浏览器会自动维护Cookie池,登录后后续请求能自动带上Cookie,但Flutter没有内置该机制,需借助第三方包配合实现,以下是基于dio的具体做法:

  • 首先添加依赖到pubspec.yaml:

    dependencies:
      dio: ^5.x.x
      dio_cookie_manager: ^2.x.x
      cookie_jar: ^4.x.x
    

    注:版本号选用最新稳定版即可

  • 初始化Dio并配置Cookie管理器(全局仅需初始化一次):

    import 'package:dio/dio.dart';
    import 'package:dio_cookie_manager/dio_cookie_manager.dart';
    import 'package:cookie_jar/cookie_jar.dart';
    
    // 创建持久化Cookie存储(若无需持久化,可改用MemoryCookieJar,仅存内存,重启APP即消失)
    final cookieJar = PersistCookieJar(
      storage: FileStorage('your_local_cookie_path'), // 指定本地存储路径
    );
    
    // 初始化Dio实例
    final dio = Dio();
    // 给Dio添加Cookie管理器拦截器
    dio.interceptors.add(CookieManager(cookieJar));
    
  • 登录及后续请求的写法(Cookie会被自动处理):

    // 登录请求
    dynamic res = await dio.get("/login-api", queryParameters: requestParams);
    // 登录成功后,响应头里的Set-Cookie会被自动保存到cookieJar
    
    // 后续其他请求,会自动从cookieJar读取并携带Cookie
    dynamic data = await dio.get("/other-api");
    
  • 手动操作Cookie(可选):

    // 获取指定域名下的Cookie
    List<Cookie> cookies = await cookieJar.loadForRequest(Uri.parse("your_api_domain"));
    // 手动删除指定域名的Cookie
    await cookieJar.delete(Uri.parse("your_api_domain"));
    

关键说明

  • PersistCookieJar会将Cookie持久化到本地,APP重启后依然有效;若仅需临时存储,使用MemoryCookieJar即可。
  • 拦截器会自动处理请求的Cookie头和响应的Set-Cookie头,完全模拟浏览器的Cookie管理逻辑。

内容的提问来源于stack exchange,提问作者Wallace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:51:10