无法在Phonegap中使用AJAX跨域请求发送Cookie

时间:2015-07-19 11:57:32

标签: jquery ajax cordova cookies cross-domain

我有一台服务器我试图发送cookie。我发送第一个POST请求,我从响应头中存储收到的cookie,并尝试使用第二个GET请求来检索经过身份验证的用户只能访问的数据。跨域请求没问题,我能够在Phonegap应用程序中检索我的cookie,但是当发送它们时,它会失败。请求标头不包含任何cookie。 phonegap -v会返回5.1.1-0.29.0

我已经尝试过的事情:

  • 将域添加到白名单

  • 确保我保存的Cookie不在请求标头,服务器端,

  • 通过C#提出相同的请求,以确保它不会成为服务器端问题

请求代码:

$.ajax(
        {
            type: "GET",
            url: "url",
            xhrFields: {
                withCredentials: true
            },
            crossDomain: true,
            beforeSend: function(xhr) {
                xhr.setRequestHeader("Cookie", mycookies);
            },
            success: function(data){
                console.log(data);
            },
            error: function (xhr) {
                console.log(xhr.responseText);
            }
        }
    );

非常感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:0)

通过快速搜索,我了解Cordova不会持有cookie,因此您必须使用本地存储。

以下是示例:http://justbuildsomething.com/cordova-and-express-session/

答案 1 :(得分:0)

在标题ajax中添加cookie:

$.ajax(
    {
        type: "GET",
        url: "url",
        xhrFields: {
            withCredentials: true
        },
        crossDomain: true,
        headers: {
          Cookie: mycookies
        },
        success: function(data){
            console.log(data);
        },
        error: function (xhr) {
            console.log(xhr.responseText);
        }
    }
);

答案 2 :(得分:0)

最终,Phonegap似乎没有任何可以让您使用cookie标头执行跨域AJAX调用的外部插件。愚蠢。我通过编写一个小代理解决了,无法解决任何其他更好的解决方案。感谢任何试图帮助的人,我很感激。