【问题标题】:"Referer Header Required" error in couchdb when trying to use _find尝试使用 _find 时,couchdb 中出现“需要引用标头”错误
【发布时间】:2018-04-08 17:13:54
【问题描述】:

我开始使用 CouchDB,并已开始构建应用程序。我可以使用 CURL 很好地书写和阅读,但我已经开始尝试使用 _find 进行搜索,但我收到一条错误消息,指出“需要引用页眉”。

curl -X POST http://localhost:5984/mydb/_find -d '{"selector":{"member.email":"foo@bar.com"}}

返回:

{"error":"bad_request","reason":"Referer header required."}

当我尝试在调用中添加“Referer”主机时,它只是说引用者需要匹配主机,但我不知道它是什么主机。

curl -X POST http://localhost:5984/mydb/_find -d '{"selector":{"member.email":"matthew"}}' -H "Referer: localhost" {"error":"bad_request","reason":"Referer header must match host."}

我尝试了各种组合,使用 localhost,使用和不使用端口号,我尝试使用 X-Forwarded-Host,我找到了十几篇关于 POST 与 PUT 和版本控制的相关文章,但我走到了死胡同,无法弄清楚我错过了什么。

注意。我在 OSX 笔记本电脑上运行 couchdb1.7.x。

【问题讨论】:

  • 引用者必须是 URL,而不仅仅是主机名。在那之后您可能仍然会收到另一个错误,因为我认为它不需要引用来进行此类查询。
  • @EricDarchis 我想我尝试了所有可能的组合 - IP 地址、主机名、完全限定的 URL、路径等等。

标签: macos curl couchdb


【解决方案1】:

通过查看源代码,我设法修复了Referer header required 和后续的Referer header must match host。虽然真正的问题是期望 _find 在那些古老的 1.X 构建操作系统包管理器默认工作。升级到最新版本的couchdb(3.1.1)会好很多。

您可以通过将虚拟主机添加到配置文件/etc/couchdb/local.ini来解决旧版本的错误

[vhosts]
;localhost = /db/
localhost = /*
[httpd]
x_forwarded_host = Y-Forwarded-Host

并且可能还为 X-Forwarded-Host 使用自定义标头名称,在我的情况下,获取 API 调用的软件对 X-Forwarded-Host 和 Host 标头做了一些过于聪明的事情。

所以当您调用 couchdb 时,只需将新标头包含在 'localhost' 中

curl -X POST http://localhost:5984/mydb/_find \
-H 'Referer: localhost' \
-H 'Y-Forwarded-Host: localhost' \
-d '{"selector":{"member.email":"foo@bar.com"}}

或空白,以便它们匹配

curl -X POST http://localhost:5984/mydb/_find \
-H 'Referer' \
-H 'X-Forwarded-Host' \
-d '{"selector":{"member.email":"foo@bar.com"}}

第 2 版或第 3 版以后都不需要标头,他们意识到了。

【讨论】:

  • 我不知道这是否有效,但我赞成你的回答,因为我感受到了你的痛苦。
【解决方案2】:

可能为时已晚,但对于下一个将讨论这个话题的人(比如我)来说, 问题是:

http://localhost:5984/mydb/_find

当您尝试在 PUT 中更改 POST 时,您会遇到问题:

"reason":"Only reserved document ids may start with underscore."

_document 指的是特殊功能,所以只需更改文档的名称 :)

(应该在这两个帖子/之后工作)

【讨论】:

  • findPOST,而不是PUT,并引发错误Referer header required,而不是下划线错误。我仍在寻找问题的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 2015-07-31
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
相关资源
最近更新 更多