gpt4 book ai didi

cordova - 从 XHR 请求/响应中读取/写入 cookie (PhoneGap/Cordova)

转载 作者:可可西里 更新时间:2023-11-01 15:27:40 26 4
gpt4 key购买 nike

我正在使用 $http(角度)并发布到我无法控制的远程网站。
登录时,它会给我一个我想阅读的“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: 对象 {myTest1: "test1"}
超时后的 cookie:对象 {myTest2: "test2"}

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

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

最佳答案

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

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

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

关于cordova - 从 XHR 请求/响应中读取/写入 cookie (PhoneGap/Cordova),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30011315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com