524 响应没有 CORS headers

524 response has no CORS headers

我有一个 Couch/Pouch 应用程序似乎可以正常工作,但遇到奇怪的延迟并在浏览器日志中填满 CORS 错误。 CORS 错误仅发生在超时的 GET 上,因为它们的响应不提供 CORS headers.

使用浏览器开发工具,我可以看到许多成功的轮询请求,如下所示:

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 秒的长轮询提要

显然 的缺陷是 CouchDB 的 524 响应没有 CORS headers!

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

我会 post 这是 CouchDB 存储库中的一个问题,但我想先在这里得到一些反馈;我很容易误解一些东西,

其他因素:

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

如果我需要提供更多详细信息,请告诉我。

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

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