【问题标题】:How to persist a cookie in Dart?如何在 Dart 中持久化 cookie?
【发布时间】:2021-06-02 00:36:55
【问题描述】:

我正在 Flutter 中制作一个应用程序,我需要在标题上发送一个 cookie 以访问我的 Web API。

但是,我没有任何成功。

这是我的代码。 我如何在颤动中持久化 Cookie?

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

class XsrfToken {
  static Future<String> getXsrf(String getJwt) async {
    var url = 'https://www.myservice.com/api/v1/api.php';

    var decode = json.decode(getJwt);

    var header = {"Content-Type": "application/json"};

    Map params = {"token": decode};

    var _body = json.encode(params);

    var response = await http.post(url, headers: header, body: _body);

    print('Responde status ${response.statusCode}');
    print('Responde body ${response.body}');

    var xsrf = response.body;

    var prefs = await SharedPreferences.getInstance();
    prefs.setString("TokenXSRF", xsrf);

    return xsrf;
  }
}

【问题讨论】:

标签: flutter dart cookies


【解决方案1】:

向听众添加 cookie。

var cookie1 = 'xyz';
var cookie2 = 'abc';

var headers =  {
          "Content-Type": "application/json",
          'Cookie': 'myCookie1=$cookie1; mycookie2=$cookie2',
        };

用于检索 cookie

var cookiesData = response.headers['set-cookie'];
if (cookiesData != null) {
    Map _cookies = _formatCookies(cookiesData);
    // Do your logic
}

你会得到一个很长的字符串。

这是我个人用于格式化的内容

Map _formatCookies(String cookiesData) {
  Map cookies = {};

  if (cookiesData.contains('cookie1')) {
    List at = RegExp(r'(cookie1)(.*?)[^;]+').stringMatch(cookiesData).split('=');
    cookies['cookie1'] = at[1];
  }

  if (cookiesData.contains('cookie2')) {
    List rt = RegExp(r'(cookie2)(.*?)[^;]+').stringMatch(cookiesData).split('='); 
    cookies['cookie2'] = rt[1];
  }

  return cookies;
}

【讨论】:

  • 是的,但是我怎样才能从服务器响应中重新获取这个 cookie?
  • 我需要的是获取服务器发送给我的cookie。
  • _format 函数我个人用于 jwt 令牌,不确定其他字符串的 RegExp。
  • 感谢您的回答。我会尝试在这里重现。
猜你喜欢
  • 2011-02-20
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 2012-08-09
  • 1970-01-01
  • 2013-05-14
相关资源
最近更新 更多