2013-03-21 31 views
1

我写一个couchapp,它使用couch.jquery.js库。CouchDB的会话和IE8

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

这似乎是资源管理器不会阻止该cookie从登录。有没有人有关于此的任何信息? 我已经试过Ĵ克里斯的couchLogin.js库,同样的问题写我自己的登录脚本。

的会话代码是:从IE

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

响应:从Firefox/Chrome的

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

响应:

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

您使用的是什么版本的jQuery?你检查过浏览器控制台是否有任何错误? – SDC 2013-03-21 11:54:47

+0

感谢您的回复。 控制台上没有错误。我已经记录了响应,并且代码执行正常,它只是认为用户已注销。我使用JQuery 1.9.1(使用jQuery-migrate-1.1.1)。也试过用jQuery-1.8.3。 (我已经添加了呼叫和响应于该问题) – ddouglascarr 2013-03-21 21:46:51

回答

0

我已经通过编辑jquery.couch解决了这个。 js,并将会话函数中的缓存: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; 
     } 
    } 
    }); 
} 
+0

嘿我有一个类似的问题: 。你认为你已经应用的修复方法也有效吗? “jquery.couch.js”的来源究竟是什么? – blaineh 2013-10-16 17:27:46

+0

我刚刚试了一下,它没有任何效果。我仍然得到一个空名称。 – blaineh 2013-10-16 17:37:08

+0

另外,我遇​​到了Chrome的这个问题,所以我怀疑这是浏览器问题,尤其是因为您没有使用Chrome的问题。 – blaineh 2013-10-16 17:47:18