簡體   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