首页 > 解决方案 > 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:

  1. 在 GET 请求之前有一个 OPTIONS 请求
  2. 指定一个 10 秒超时的 longpoll 提要

显然,缺陷是CouchDB 的 524 响应没有 CORS 标头!

我有四个这样live: true, retry: true的复制器,所以我的浏览器日志每十秒显示四个红色错误。

我会将此作为问题发布在 CouchDB 存储库中,但我想先在这里获得一些反馈;我很容易误解一些东西,

其他因素:

  1. 我将客户端代码托管在 GitHub 页面中,并通过 CloudFlare 提供服务。
  2. 从客户端访问 CouchDB 也通过 CloudFlare
  3. CouchDB 在我的 VPS 上位于 NGinx 后面。

请让我知道我是否应该提供更多详细信息。

标签: couchdbcloudflarepouchdb

解决方案


回答这个问题的功劳实际上应该归功于 @sideshowbarker,因为他让我意识到错误不在 CouchDB 中,而是在我的 Cloudflare 设置中。

在这些设置中,我将 CouchDB 站点设置为使用DNS and HTTP proxy (CDN)(橙色云图标)模式而不是DNS only(灰色云图标)。DNS only在相当长的延迟(超过一个小时?)后,切换到并可能不必要地擦除缓存,解决了问题。


推荐阅读