2

我正在跨域执行 BrowserClient POST,但没有看到包含我的 cookie。

这是我得到的回应:

在此处输入图像描述

当我发送另一个 POST 请求时,我没有看到包含的 cookie:

在此处输入图像描述

直接进入测试页面,我可以看到包含的 cookie:

在此处输入图像描述 在此处输入图像描述

我用来做 POST 的 Dart 代码:

var client = new BrowserClient();

client.post(url, body: request, headers:{"Content-Type" : "application/json", "Access-Control-Allow-Credentials":"true"}).then((res) {
      if (res.statusCode == 200) {
        var response = JSON.decode(res.body);

        callback(response);
      } else {
        print(res.body);
        print(res.reasonPhrase);
      }
    }).whenComplete(() {
      client.close();
    });

不确定我包含的 Access-Control-Allow-Credentials 标头,无论有没有它,都没有任何变化。

我是否缺少需要在响应中设置的服务器端标头,或者 Dartium 是否阻止了跨域 cookie?

有关信息安全的更多详细信息以及通过服务器设置 cookie 的原因。

更新:记录的增强请求:https ://code.google.com/p/dart/issues/detail?id=23088

更新:已实现增强,现在应该可以var client = new BrowserClient()..withCredentials=true;基于 https://github.com/dart-lang/http/commit/9d76e5e3c08e526b12d545517860c092e089a313

4

1 回答 1

2

对于发送到 CORS 请求的 cookie,您需要设置withCredentials = true. 包中的浏览器客户端http不支持此参数。您可以改用HttpRequestfrom dart:html。有关示例,请参阅如何使用 dart-protobuf 。

于 2015-04-03T08:16:17.277 回答