Read/Write 来自 XHR request/response (PhoneGap/Cordova) 的 cookie

Read/Write the cookies from an XHR request/response (PhoneGap/Cordova)

我正在使用 $http (angular) 并发布到我无法控制的远程网站。
登录时,它给了我一个 'site_session' 我想阅读的 cookie。 请注意,我能够调用远程网站(跨域),因为 运行 在移动设备上,在 Cordova 应用程序中。

我尝试了网上找到的各种解决方案,但都没有成功。
我正在使用 Angular 1.3.13,所以 $timeout 之后的 $cookies 应该可以工作,但没有。
我在 $httpProvider.defaults 和 $http 调用的配置本身中尝试了 withCredentials = true 技巧:运气不好。

$cookies 似乎在每个范围内死亡并重置。

例如:

$http({
    method: 'POST',
    url: 'http://distantsite.com/login.php',
    data: 'username=test&password=test',
    headers: {
      'Accept': 'text/html',
      'Cookie': "site_session=abcd", // this will be blocked: refused to set unsafe header
      'Content-Type': 'application/x-www-form-urlencoded',
      'Access-Control-Allow-Credentials': true,
    },
    withCredentials: true,
}).success(function(response, status, headers){
    $cookies.myTest1 = 'test1';
    $log.info('cookies: ', $cookies); // Object {myTest1: "test1"} 
    $timeout(function(){
        $cookies.myTest2 = 'test2';
        $log.info('cookies after timeout: ', $cookies); // Object {myTest2: "test2"}, myTest1 has disappeared!
    });
});

输出:
cookies: Object {myTest1: "test1"}
cookies after timeout: Object {myTest2: "test2"}

我没有得到任何真正的 cookie,只有我设置的最后一个...

我完全没有解决方案。有没有人有有效的工作方式来检索从 Cordova 应用程序中的 Angular 调用远程(跨域)站点的 cookie?
如果可能的话,我想为此保留 $http,但我不介意使用其他东西,只要它能在客户端(浏览器)运行即可。

我确认无法通过 Android PhoneGap/Cordova 中 JavaScript 的 XMLHttpRequest 对象管理 cookie,无论使用何种框架(因此不是 angular 问题).
它似乎是 功能 ,而不是 错误 ,没有计划将 cookie 暴露给 JavaScript 端(cookie 受到 管理,但没有暴露给 Cordova 的 JavaScript 客户端。
iOS 上似乎有解决方法,但我无法确认。

我为 Android 找到的唯一解决方法是创建一个本地执行 HTTP 调用的 Cordova 插件(在 Android 上使用 java.net.*),提供对 cookie 的访问权限并将它们传递回 JavaScript 端。
查看 Cordova 插件文档以获取更多详细信息:http://docs.phonegap.com/en/4.0.0/guide_hybrid_plugins_index.md.html

幸运的是,Cordova 插件非常容易设置并且非常强大,因为您可以获得所有本机可能的功能。