Dart BrowserClient POST不包括我的cookie

时间:2015-04-03 06:21:16

标签: cookies dart cors dartium

我正在跨域进行BrowserClient POST,并且看不到我的Cookie被包含在内。

这是我得到的回应:

enter image description here

当我发送另一个POST请求时,我看不到包含的Cookie:

enter image description here

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

enter image description here enter image description here

我用来制作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?

有关Information Security的更多详情以及通过服务器设置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

1 个答案:

答案 0 :(得分:2)

对于发送到CORS请求的cookie,您需要设置withCredentials = truehttp包中的浏览器客户端不支持此参数。您可以使用HttpRequest中的dart:html代替{{1}}。 有关示例,请参阅How to use dart-protobuf