Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何从标题中获取Flatter Web中的cookie?_Flutter_Cookies_Flutter Web - Fatal编程技术网

Flutter 如何从标题中获取Flatter Web中的cookie?

Flutter 如何从标题中获取Flatter Web中的cookie?,flutter,cookies,flutter-web,Flutter,Cookies,Flutter Web,颤振Web应用程序发送一个HTTP REST API POST请求,并返回一个JSON响应和设置cookie头中的cookie,如下所示 (颤振(通道测试版,1.22.0,在Microsoft Windows上) 提取cookie时,响应似乎找不到标头值。调用和提取代码为: var response = await http.post(url, headers: {"Content-Type": "application/json"}, body: js

颤振Web应用程序发送一个HTTP REST API POST请求,并返回一个JSON响应和设置cookie头中的cookie,如下所示

(颤振(通道测试版,1.22.0,在Microsoft Windows上)

提取cookie时,响应似乎找不到标头值。调用和提取代码为:

var response = await http.post(url, headers: {"Content-Type": "application/json"}, body: jsonEncode(data));

if (response.statusCode == 200) {
  var cookie = response.headers['set-cookie'];
  print('cookie: $cookie');
}
结果是:

cookie: null
服务器端在Docker容器中的ASPNet.Core 3.1上运行,但是这不应该是问题,因为cookie在头中。那么,如何在Flatter Web中提取它呢

实际上,我的最终目标是将cookie与其他每个请求一起发送回去。但这似乎不是在浏览器中自动发生的。因此,如果有人能够指出处理这种情况的正确方法,这也是一个很好的解决方案


非常感谢您的帮助。谢谢。

这个问题是一个月前提出的,但我的回答可能会对其他人有所帮助。 Flatter Web中的Cookie由浏览器管理-它们会自动添加到请求(到Cookie标头),如果Cookie以前是由set Cookie设置的-更准确地说,当您发布build时,它会正常工作。 就我而言,它在开发人员构建期间不起作用。我的解决方案:

在服务器集标题上:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:61656
//端口号可能不同

在颤振中: 班级成员:

final http.Client _client = http.Client();
//范例

Future<String> getTestString() async {
    if (_client is BrowserClient)
      (_client as BrowserClient).withCredentials = true;
    await _client.get('https://localhost/api/login');
    await _client.get('https://localhost/api/login');
    return 'blah';
  }
//与服务器上的端口号相同


请记住,在Flatter Web中,网络请求是通过浏览器XMLHttpRequest发出的。

谢谢您的回答。我已经通过使用承载令牌解决了我的问题,但下次我将使用此解决方案。这个回答今天真的救了我一命,谢谢。这对我的用例非常有用。
BrowserClient
未定义,这是一个很好的解决方案软件包提供了它?
import”软件包:http/browser\u client.dart“;
for
browser客户端
对我不起作用。仍然没有cookies。。。
flutter run -d chrome --web-port=61656