1

我正在编写一个 couchapp,它使用 couch.jquery.js 库。

当我使用 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"}}
4

1 回答 1

0

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

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;
      }
    }
  });
}
于 2013-03-21T22:21:59.703 回答