【问题标题】:Impossible to retrieve AuthSession cookie Couchdb via javascript无法通过 javascript 检索 AuthSession cookie Couchdb
【发布时间】:2013-12-31 12:07:10
【问题描述】:

我正在尝试通过 javascript 为单页应用程序 (pouchdb) 设置登录/注销页面。

通过 curl 检索和发送 authsession cookie 工作正常,如文档中所述,但是当我尝试在 javascript 中重现它时, var contType = AjaxRequest.getAllResponseHeaders(); 警报(contType);

我可以检索的唯一参数是:

服务器:CouchDB/1.5.0 (Erlang OTP/R16B01) 内容类型:文本/纯文本;字符集=utf-8 缓存控制:必须重新验证

有人成功检索到此会话 cookie 并将其与 javascript 一起使用吗? 谢谢, jl

【问题讨论】:

  • 我也遇到了同样的问题。我实际上在请求中看到了 cookie,但是发生了一些奇怪的事情,我无法详细解释涉及 CORS 和 cookie 的详细信息。显然,在我的情况下,set-cookie 被忽略了,因为我使用 localhost 作为我的域......有一些关于它的东西以及消除 javascript 中的 cookie 的 cors。我的应用是 angular/cordova 应用。

标签: security couchdb pouchdb


【解决方案1】:

AuthSession 被标记为HTTPOnly - 即它将only be exposed over HTTP(S) 并且不可用于JavaScript(以防止篡改)。

如果用户验证正确,对 /_session 的调用将返回 200 响应,如果凭据不正确,则返回 401。如果成功(200 响应),AuthSession cookie 将由浏览器自动存储并传递给未来对 CouchDB url 的请求,直到关闭浏览器/选项卡或您向 /_session 发出 DELETE 请求。

您应该能够根据这些语义实现登录页面,而无需直接访问 cookie。

【讨论】:

    【解决方案2】:

    这是个好问题。我不知道我是否可以回答这个问题,但我有不同的处理方式。发出 ajax 请求后,浏览器本身应该设置 cookie。

    https://github.com/carhartl/jquery-cookie

    我在使用这个 jQuery 插件处理来自 CouchDB 登录的 AuthSession cookie 方面有过积极的体验。 $.cookie("AuthSession") 通常可以解决问题。

    【讨论】:

      猜你喜欢
      • 2011-02-25
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多