gpt4 book ai didi

在 Flutter 中使用 Cookie 发布请求

转载 作者:IT王子 更新时间:2023-10-29 06:54:45 25 4
gpt4 key购买 nike

我正在尝试将 Cookie 添加到我的请求中:

在这里,我通过 GET 请求获得了 csrftoken:

 Future<String> getCsrftoken() async{
var response = await http.get(Uri.encodeFull('http://test/accounts/login/'));
var csrftoken = response.headers.remove('set-cookie').substring(10,74); //csrf
64 chars
return csrftoken;
}

我在这里尝试使用包 Dio 执行 POST (application/x-www-form-urlencoded) 请求.

getSessionId() async {
var csrf = await getCsrftoken();
var cj = new CookieJar();
List<Cookie> cookies = [new Cookie("csrftoken", csrf)];
cj.saveFromResponse(Uri.parse("http://test/accounts/login/"), cookies);
List<Cookie> results = cj.loadForRequest(Uri.parse("http://test/accounts/login/"));
var dio = new Dio(new Options(
baseUrl: "http://test/accounts/login/",
connectTimeout: 5000,
receiveTimeout: 100000,
// 5s
headers: {
},
contentType: ContentType.JSON,
// Transform the response data to a String encoded with UTF8.
// The default value is [ResponseType.JSON].
responseType: ResponseType.PLAIN
));

Response<String> response;

response = await dio.post("",
data: {
"username": "username",
"password": "password",
"csrfmiddlewaretoken" : getCsrftoken()
},
// Send data with "application/x-www-form-urlencoded" format
options: new Options(
contentType: ContentType.parse("application/x-www-form-urlencoded")),
);
print(response.statusCode);
}

我得到 403 状态代码,因为我需要添加作为 cookie csrftoken

我应该如何进行?

最佳答案

来自Dio Dart API Docs :

Cookie 管理器

您可以使用 cookieJar 管理请求/响应 cookie。

dio cookie manage API是基于撤回的cookie_jar。

您可以创建一个 CookieJar 或 PersistCookieJar 来自动管理 cookie,dio 默认使用 CookieJar,它将 cookie 保存在 RAM 中。如果想持久化cookies,可以使用PersistCookieJar类,示例代码如下:

var dio = new Dio();
dio.cookieJar=new PersistCookieJar("./cookies");

PersistCookieJar 是一个 cookie 管理器,它实现了 RFC 中声明的标准 cookie 策略。 PersistCookieJar 将 cookie 保存在文件中,因此如果应用程序退出,cookie 将始终存在,除非明确调用 delete。

有关 cookie_jar 的更多详细信息,请参阅:https://github.com/flutterchina/cookie_jar .

关于在 Flutter 中使用 Cookie 发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52500575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com