使用令牌进行 PouchDB 身份验证(Cookie:AuthSession=xyz)导致不安全标头“Cookie”

2023-12-25

我想使用 couchdb 给出的访问令牌连接到我的远程 couchdb 数据库,这可以通过发送带有以下内容的标头来完成:

Cookie: AuthSession={COUCHDB_TOKEN}

我用curl 做到这一点没有问题。但是,使用 pouchDB 时,代码如下:

new PouchDB(url, {
    ajax: { headers: {'Cookie': 'AuthSession=couchdb_token'} }        
});

我收到错误:

Refused to set unsafe header "Cookie"

有没有办法将此令牌放入标头中而不会出现此错误?

我已经做过研究,但不可能找到一种在不提供用户名和密码的情况下使用 pouchdb 与远程数据库同步的方法,但这些不应该存储在客户端,所以..


问题在于浏览器阻止了“Cookie”请求标头的设置,因为该标头是由浏览器直接管理的。您不能设置任何这些标题 https://fetch.spec.whatwg.org/#forbidden-header-name.

您应该使用 _session 端点向 CouchDB 进行身份验证。该端点将使用 Set-Cookie 标头进行响应,该标头在浏览器中建立了 AuthSession cookie,该 cookie 在下一次调用中发送回 CouchDB。

我通常做的是在 CouchDB 中配置 ProxyAuthentication(注意:这在 CouchDB 2.0 中被破坏)模式,然后在我的应用程序中使用自定义身份验证标头进行身份验证。这种方法有点复杂,但允许您将应用程序身份验证令牌与 CouchDB 一起使用。 - - 编辑 - -

请检查您是否有启用代理身份验证 http://docs.couchdb.org/en/2.1.1/api/server/authn.html#proxy-authentication。 身份验证令牌的逻辑是here http://docs.couchdb.org/en/2.1.1/config/auth.html#couch_httpd_auth/x_auth_token。 您不需要调用 _session 端点,只需使用正确的逻辑构建令牌即可。

-- 编辑2 --

查看 CouchDB 代码,令牌是通过以下方式生成的:

“X-Auth-CouchDB-Token”:hex_hmac_sha1(秘密,“[电子邮件受保护] /cdn-cgi/l/email-protection")

Where:

  • Secret 是由 couch_httpd_auth/secret 定义的密钥。
  • 用户是标头 X-Auth-CouchDB-UserName 中提供的用户

您应该在客户端重现此逻辑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用令牌进行 PouchDB 身份验证(Cookie:AuthSession=xyz)导致不安全标头“Cookie” 的相关文章

  • 在 Nano 中更新 CouchDB 文档 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要获取一个文档 更改 插入 删除
  • 对于跨域 XHR 丢弃 cookie 不是更简单吗?

    在进行网络开发时 我一直在与奇怪的限制作斗争 其中之一是 AJAX 请求的同源限制 我问自己 在创建请求时丢弃 cookie 而不是阻止对跨域资源的请求是否会更简单 以避免滥用 AJAX 请求的身份验证凭据 浏览器会话 Cookie 是一种
  • For-each 在 ionic2 和 angularjs2 中

    我用 IONIC 2 Beta 版本制作了一个应用程序 我想用for each环形 是否可以在 Angular V2 中使用每个 Thanks 首先在Component 您必须声明要显示的数组 import Component from a
  • ion-textarea 在 Ionic 5 中动态调整高度

    我正在将我的项目从 Ionc3 迁移到 Ionic5 我有一个 ion textarea 它会随着用户键入而增加高度 并且它在 Ionic3 中工作 以下是代码 HTML 页面
  • Android studio SDK 管理器丢失

    我正在关注这个离子教程 https ionicacademy com get started with ionic 在 Android Studio 中设置 SDK 来测试我的 ionic 项目时遇到了一些问题 我正在寻找 SDK 管理器
  • 是否可以阻止在每个 HTTP 请求中发送 cookie?

    我最近发现 这里 每个网络请求都会发送浏览器cookie吗 https stackoverflow com questions 1336126 does every web request send the browser cookies
  • Nodejs 中的 Couchdb

    我刚刚开始在nodejs 中使用couchdb 我正在寻找可以帮助我入门的教程或文章 或者至少是一些代码行 我不想使用任何模块进行数据库抽象 因为这会违背学习的目的 我希望制作自己的与 Couch 一起使用的模块 根据我的理解 这可以通过请
  • 设计不能很好地处理 RoR3 应用程序上的多个子域

    我看到了很多关于这个主题的问题 但其中很多都有相互矛盾的信息 并且由于某种原因它对我不起作用 I have 顶级域名 即 lvh me 开发 每个用户都有子域 即 userdomain lvh me 登录表单位于顶级域 lvh me I w
  • 是否有管理 __utma、__utmz 等 cookie 的标准?

    无论我登录 Facebook 还是 Twitter 我都会受到以下名称的 cookie 轰炸 utma utmb utmc utmv 它们的功能是什么 是否有一个标准来管理这些在服务器端的使用方式 这些 cookie 通常与谷歌分析 htt
  • GCloud 负载均衡器会话亲和性 cookie“Set-Cookie”标头 - 由于误用“sameSite”属性,在 Firefox 中成为错误

    根据手册页 https cloud google com load balancing docs backend service http cookie affinity https cloud google com load balanc
  • 如何使用 jQuery 设置/取消设置 cookie?

    如何使用 jQuery 设置和取消设置 cookie 例如创建一个名为test并将值设置为1 2019 年 4 月更新 Cookie 读取 操作不需要 jQuery 因此不要使用下面的原始答案 Go to https github com
  • Javascript 桥接到 Flash 以在 Flash 中存储 SO“cookie”

    读完这个问题后如何唯一地识别访问我网站的计算机 https stackoverflow com questions 216542 how do i uniquely identify computers visiting my web si
  • 列表视图标题和第一项之间的空白

    我创建了一个带有 ListView 的 Android 应用程序 我已将页眉和页脚添加到列表中 但是 当添加分隔符 分隔符时 它还会在标题和第一个 ListView 项之间创建一个空白空间 它对最后一个 ListView 项目和页脚执行相同
  • C# HttpClient 自定义标头每个请求

    我注意到使用 HttpClient 是NOT修改时线程安全HttpClient DefaultRequestHeaders但我想提出尽可能多的请求 我每个请求都需要一个自定义标头 其他两个标头始终相同 URL 也发生了一些变化 http e
  • 如何删除带有空“”文档 ID 的 couchdb 文档?

    我在数据库中看到的文档是这样的 id rev 1 2f11e026763c10730d8b19ba5dce7565 禁止 必须提供最新的 rev以更新现有包 我在文档中看到的所有内容都显示引用带有 ID 的文档 但这当然不可能发生 我不太确
  • Rails 渲染 JSON - 会话丢失?

    我正在尝试对控制器进行一些 Ajax 调用 该控制器以 JSON 进行响应 if session user render json gt Some Data else render json gt You are not logged in
  • 安全 Cookie?

    我正在慢慢地将我的 未发布的 CMS 从 SESSION to COOKIE 互联网上的内容似乎更偏向于 SESSION 我认为是因为易于使用 我正在寻找有关保存 cookie 的安全提示 目前 我正在以以下格式存储 有点类似于 WordP
  • BUG - 在 IOS 中没有选择标签的完成按钮

    我正在使用最新的离子并有一个简单的选择标签
  • setcookie with expire=0 浏览器关闭后不会过期

    我使用setcookie来制作一个过期 0的cookie 从 PHP 文档来看 link http php net manual en function setcookie php cookie 过期的时间 这是一个 Unix 时间戳 所以
  • Yii2 - 错误请求 (#400) |前端和后端cookie

    仅当我打开时才会出现此问题frontend and backend在相同的browser 设想 与后端交互 gt 切换选项卡 gt 与前端交互 gt 切换选项卡返回 gt 与后端交互 gt 错误请求 400 Cookie 后端 identi

随机推荐