[英]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.