0

在我们的 Android 平台中的 Cordova 项目中,getResponseHeader("Set-Cookie")仅返回响应中的最后一个 cookie,而不是像在 iOS 平台中那样返回所有 cookie。

$.ajax({
type: "POST",
cache:false,
url: url,
contentType: "application/json; charset=utf-8",

data: dotJSON,
success: function( data, textStatus, req ) {
    $.mobile.loading( 'hide', {
        textVisible: false,
        theme: 'a',
        html: ""
    });

    var header = req.getAllResponseHeaders();

    //console.log(header);
    console.log(req.getResponseHeader("Set-Cookie")); // this only prints the following
   // 'Set-Cookie: DIdN=[...]; path=/'

   [...]
});

在 iOS 平台中console.log(req.getResponseHeader("Set-Cookie"));还打印了一个 ASPXAUTH-cookie,我们需要它来保持与服务器的会话。

我在 SO、PhoneGap Google 组和 Cordova 问题跟踪器上都进行了搜索,发现与我有相同问题的人,但他们都没有得到答复。

有人对 Android 平台上可能出现的问题有任何想法,但在 iOS 平台上却没有?

4

1 回答 1

2

我通过将响应正文中的 cookie 作为字符串发送,然后将其存储在本地存储中来解决了这个问题:

window.localStorage.setItem("Cookies", data);

然后我将它们设置在我所有的ajax请求中

beforeSend:setHeader

function setHeader(xhr){
    xhr.setRequestHeader('Set-Cookie', window.localStorage.getItem("Cookies"));
}

希望这会帮助其他有同样问题的人。

于 2013-09-26T09:50:27.597 回答