couchdb - 524 响应没有 CORS 标头
问题描述
我有一个 Couch/Pouch 应用程序,它似乎可以正常工作,但会遇到奇怪的延迟,并且浏览器日志中会出现 CORS 错误。CORS 错误仅发生在超时的 GET 上,因为它们的响应不提供 CORS 标头。
使用浏览器开发工具,我可以看到许多成功的轮询请求,如下所示:
GET https://couch.server/mydb/_changes
?style=all_docs
&filter=_view
&view=visible/person
&since=369-69pI ...... bTC_376CZ
&limit=100
response 200
......和这样的坏人......
OPTIONS https://couch.server/mydb/_changes
?style=all_docs
&feed=longpoll
&heartbeat=10000
&filter=_view
&view=visible/person
&since=369-69pI ...... bTC_376CZ
&limit=100
response 200
GET https://couch.server/mydb/_changes
?style=all_docs
&feed=longpoll
&heartbeat=10000
&filter=_view
&view=visible/person
&since=369-69pI ...... bTC_376CZ
&limit=100
response 524
因此,好案例和坏案例之间只有两个区别。在坏情况下 PouchDB:
- 在 GET 请求之前有一个 OPTIONS 请求
- 指定一个 10 秒超时的 longpoll 提要
显然,缺陷是CouchDB 的 524 响应没有 CORS 标头!
我有四个这样live: true, retry: true
的复制器,所以我的浏览器日志每十秒显示四个红色错误。
我会将此作为问题发布在 CouchDB 存储库中,但我想先在这里获得一些反馈;我很容易误解一些东西,
其他因素:
- 我将客户端代码托管在 GitHub 页面中,并通过 CloudFlare 提供服务。
- 从客户端访问 CouchDB 也通过 CloudFlare
- CouchDB 在我的 VPS 上位于 NGinx 后面。
请让我知道我是否应该提供更多详细信息。
解决方案
回答这个问题的功劳实际上应该归功于 @sideshowbarker,因为他让我意识到错误不在 CouchDB 中,而是在我的 Cloudflare 设置中。
在这些设置中,我将 CouchDB 站点设置为使用DNS and HTTP proxy (CDN)
(橙色云图标)模式而不是DNS only
(灰色云图标)。DNS only
在相当长的延迟(超过一个小时?)后,切换到并可能不必要地擦除缓存,解决了问题。
推荐阅读
- file - Apache Camel 使用新行令牌拆分并使用聚合策略
- c# - 如何使用 Html Agility Pack 查找表格的最后一列
- html - 在后台使用精灵中的 SVG
- linux - 奇木。初始化后Linux不在控制台中写入
- php - Laravel 路由的编写方法
- java - 如何从集合中获取所有数据
- django - 如何在表中显示最新更新的记录-Django
- javascript - 如何对 jquery 中的输入文本事件做出反应?
- php - 我进行了用户身份验证,在 localhost 中它工作正常,但在服务器上我收到此错误:: Class '\app\models\User' not found
- axon - 未调用 TrackingEventProcessors 中的 Axon EventHandlers