我想做一个设置cookie,做一个获取请求,然后获取cookie。在Python中,它将是这样的:
> import requests cookies = {'status': 'working','color':'blue'}
> response = session.get('https://google.com/', cookies=cookies)
> print(session.cookies.get_dict())
你知道怎么抖吗?我尝试了类似的东西,但它似乎没有一个cookie在响应和cookie似乎没有被发送
Map<String, String> headers = {
"status":"working",
"color":"blue"
};
final BaseOptions dioBaseOptions = BaseOptions(
baseUrl: 'https://google.com',
headers: {
'Cookie': headers,
},
);
dio = Dio(dioBaseOptions);
var cookieJar=CookieJar();
dio.interceptors.add(CookieManager(cookieJar));
var response = await dio.get('https://google.com/');
2条答案
按热度按时间zrfyljdw1#
Cookie由服务器在响应标头中设置,浏览器在请求标头中将其发回。
在接收到HTTP请求后,服务器可以发送一个或多个Set-Cookie报头和响应。浏览器通常存储cookie并将其与向同一服务器发出的请求一起发送到Cookie HTTP头中。
详情请参见Using HTTP cookies。
CookieManager
为dio
和Flutter执行此操作。在dio响应中访问Cookie
k3bvogb12#
根据您使用Flutter Web或移动的设备的情况,有不同的方式来获取Cookie
对于Flutter Web,您只需:
您的浏览器将完成这项工作并自动重新发送您的Cookie。
你可以定义一个特定的端口时启动应用程序这个命令-“flutter run -d chrome --web-port 5555”
但对于移动的你必须使一些技巧
我使用Dio包来轻松定义onResponse/onRequest函数和条件导入,以避免编译失败。(遗憾的是,withCredentials选项仅在Web上可用)
如果要使用默认的http类
您只需创建自己的onResponse/onRequest函数
**NetworkConfig。 dart **
**get_network_config。 dart **
**web_network_config。 dart **
**移动的_network_config。 dart **
localData是flutter_secure_storage的 Package 器(在本地保存cookie)
如果使用默认的Client()类,还可以像这样设置凭据