【问题标题】:couchdb session and IE8couchdb 会话和 IE8
【发布时间】:2013-03-10 21:46:47
【问题描述】:

我正在编写一个 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"}}

【问题讨论】:

  • 您使用的是什么版本的 jquery?您检查浏览器控制台是否有任何错误?
  • 感谢您的回复。控制台上没有错误。我已经让它记录了响应,并且代码执行得很好,它只是认为用户已注销。我正在使用 JQuery 1.9.1(带有 jquery-migrate-1.1.1)。还尝试使用 jQuery-1.8.3。 (我已经添加了对问题的调用和回复)

标签: couchdb couchapp


【解决方案1】:

我已经通过编辑 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;
      }
    }
  });
}

【讨论】:

  • 嘿,我遇到了类似的问题:stackoverflow.com/questions/19390048/…>。您认为您应用的修复程序也可以工作吗? jquery.couch.js的具体来源在哪里?
  • 我刚试了一下,没有任何效果。我仍然得到一个空名称。
  • 另外,我在使用 Chrome 时遇到了这个问题,所以我怀疑这是浏览器的问题,尤其是因为您的 Chrome 没有任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
相关资源
最近更新 更多