繁体   English   中英

无法访问 HTTP 中的 Cookie 响应 Flutter

[英]Can't Access Cookie in HTTP Response with Flutter

我正在开发 Flutter 应用程序,它将使用基于 Express 的 REST api。 在实现基于 Cookie 的会话时,我想从具有基本身份验证请求的应用程序中检索 cookies 但不知何故我无法检索 cookies 作为响应。 当我从 Postman 发出相同的请求时,没有问题,cookies 会自动设置。

我正在使用 HTTP package 提出请求,代码如下所示非常简单。

void login(String username, String password) async {
var url = 'http://$username:$password@111.222.333.444:3333/auth';
var response = await http.get(url);
print('Response header: ${response.headers}');
print('Response status: ${response.statusCode}');
print('Response body: ${response.body}');
}

header 或响应正文中没有 cookie。

您必须在 header 中调用“set-cookie”:

var cookies = response.headers['set-cookie'];

http package获取和发布操作正在发送没有 cookies 的请求,因此您应该手动放置 Z55E7DD3016CE4AC57C2ZA0

Response response = await get(url, headers: {'cookie': 'session_id=ufe1nfq69mdi67pnql6n1cs3cv; path=/; HttpOnly='});

但是有一种简单的方法可以做到这一点,而无需通过请求 package 手动放置 cookies

import 'package:requests/requests.dart';
// ...

// For example post some login request
  var url = "http://yourApilink";
  var body = Map<String, dynamic>();
  body["username"] = username;
  body["password"] = password;
  var request = await Requests.post(url, body: body);
  request.raiseForStatus();
  if(request.statusCode==200) {
    //Successful
    var statusJson = json.decode(utf8.decode(request.bytes()));
//....

// Example for get some other actions
  var url = "http://yourApilink";
  var request = await Requests.get(url);
  request.raiseForStatus();
  print(request.json()['userid']);
  if(request.statusCode==200) {
    //Successful
    var statusJson = json.decode(utf8.decode(request.bytes()));
//....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM