使用令牌进行 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” 的相关文章

  • $_COOKIE[] 设置后似乎没有反映更改

    我不记得过去使用 Cookie 时遇到过很多问题 但我在尝试时遇到了一些意想不到的结果 我在本地主机上运行 因此我的域设置 这将产生以下输出 Cookie Set Cookie equals 457718770 shou
  • jquery ui 选项卡不再支持 cookie?怎么办?

    我很抱歉这是一个开放式问题 但我很茫然 从 jquery UI 1 9 版本开始 它们使用cookie选项以保存跨多个页面的选项卡的活动状态 http jqueryui com upgrade guide 1 9 deprecated co
  • 角度 4 单击按钮功能未触发

    我正在尝试检查文本输入是否为空或不在角度 4 中 我没有为此使用表单 这只是一个输入字段 当我在下面的按钮中执行 addLocaton 函数时 需要进行检查 我的输入字段
  • 有没有办法阻止 iOS 上的 Safari 在关闭时清除网站的 cookie?

    我的移动网络应用程序的一位用户抱怨说 每次他关闭手机屏幕后使用该应用程序时 他都必须重新登录该应用程序 发生的情况是 当屏幕关闭时 或者当您通过双击主页按钮并滑开 Safari 来完全关闭 Safari 时 Safari 会清除该网站的 C
  • 在 ios 版 Ionic 中接收 URL

    我正在使用离子框架 我正在尝试设置一种从另一个应用程序接收网址的方法 就像 您在浏览器中 单击共享 然后将链接发送到另一个应用程序 我的应用程序 我找到了这个cordova https stackoverflow com questions
  • 无法使用cordova-plugin-file-transfer上传base64图像

    我正在尝试使用 cordova plugin file transfer 将 Base64 格式的图像上传到我的服务器 但到目前为止它还无法正常工作 我的代码是这样的 photoBase64 photoBase64 replace data
  • 如何在ionic 2中创建覆盖页面?

    当我进入新页面时如何创建透明的引导覆盖页面 我如何在 ionic 2 中实现 您可以在外部创建 div
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 为什么 Ionic 5 内容填充不起作用?

    升级到 Ionic 5 后 padding 属性不再像 Ionic 4 中那样起作用
  • Couchdb - 为读者用户提供的蒲团

    我想知道如何阻止读者访问 couchdb 中的 futon utils 只允许管理员访问 我需要这样做 为什么如果读者用户访问蒲团 他可以看到我所有数据库的名称以及有多少文档 我的应用程序应该让读者只有在知道文档 ID 时才能访问文档 引用
  • 使用 cordova-plugin-file 从 cordova (ionic) 中的 SD 卡读取文件作为数组

    我在我的应用程序中使用需要作为缓冲区数组获取的音频文件 为此 我让用户选择一个文件 使用 Ionic Cordova FileChooser 插件 https ionicframework com docs native file choo
  • 我可以更改 FormsAuthentication cookie 名称吗?

    我可以更改 FormsAuthentication cookie 名称吗 如果是 如何 我遇到的问题是 当我在同一个域中部署两个 Web 应用程序时 当任何人登录时 第二个应用程序将自动注销 因为它们使用相同的身份验证 cookie 名称
  • Zoopla 沙箱出现 cURL http 标头错误

    我正在为房地产经纪人开发代码 以通过他们的数据源将房产上传到 Zoopla 我在将所需的配置文件添加到所需的 http 标头时遇到问题 文档中唯一的示例是来自 Linux 的测试 echo branch reference test cur
  • 如何设置第三方 cookie

    我如何设置第三方 cookie 我有要求设置cookie 并且cookie将在访问的网站中启用 就像我在访问cde com或def com或ghi com时在abc com中设置cookie一样 所以设置的cookie将在所有网站上获取 我
  • 用于在标头更改时重新编译的简单 C 项目的示例 makefile

    有谁有完整的 makefile 可以执行以下操作 如果 HEADER 文件发生更改 则重建项目 cpp 文件在 makefile 中列出 头文件未在 makefile 中列出 头文件允许与 cpp 文件具有不同的名称 部分cpp文件没有头文
  • Internet Explorer 11 不会在网站上设置 cookie

    由于某种原因 IE11 仅限 IE11 与其他 IE9 和 IE10 一起测试 不会在我一直在处理的网站上创建会话 因此 这意味着网站登录等基本功能将无法使用 在其他浏览器上 这工作得很好 我研究了一下 发现 IE 不能与带下划线的域一起使
  • 如何设置cookie值?

    我正在执行以下操作来设置 cookie 值 HttpCookie mycookie new HttpCookie mycookie mycookie Value value1 Case sensitivity mycookie Expire

随机推荐