couchdb会话和IE8

时间:2013-03-21 11:44:21

标签: couchdb couchapp

我正在写一个使用couch.jquery.js库的couchapp。

当我使用ie8登录网站时,我获得了成功登录(它返回ok,登录ID),但是当我查询会话时,我得到一个null的userCtx.name(就像登录没有不会发生。)

似乎探险家不会保留登录cookie。有人有这方面的任何信息吗? 我已经尝试了J Chris的couchLogin.js库并编写了我自己的登录脚本,并遇到了同样的问题。

会话代码为:

$.couch.session({
    success: function(data) {
        console.log(JSON.stringify(data));
    }
});

来自IE的回复:

{"ok":true,"userCtx":{"name":null,"roles":[]},"info":{"authentication_db":"_users","authentication_handlers":["oauth","cookie","default"]}}

来自Firefox / Chrome的回复:

{"ok":true,"userCtx":{"name":"user1","roles":[]},"info":{"authentication_db":"_users","authentication_handlers":["oauth","cookie","default"],"authenticated":"cookie"}}

1 个答案:

答案 0 :(得分:0)

我通过编辑jquery.couch.js并在会话函数中将ajax调用添加到cache:false来解决这个问题。

session: function(options) {
  options = options || {};
  $.ajax({
    cache: false,  //disable caching for IE
    type: "GET", url: this.urlPrefix + "/_session",
    beforeSend: function(xhr) {
        xhr.setRequestHeader('Accept', 'application/json');
    },
    complete: function(req) {
      var resp = $.parseJSON(req.responseText);
      if (req.status == 200) {
        if (options.success) options.success(resp);
      } else if (options.error) {
        options.error(req.status, resp.error, resp.reason);
      } else {
        throw "An error occurred getting session info: " + resp.reason;
      }
    }
  });
}