Cloudflare 始终返回 304

Cloudflare always returns 304

提问人:JavaPro123 提问时间:11/10/2023 最后编辑:Brian Tompsett - 汤莱恩JavaPro123 更新时间:11/11/2023 访问量:20

问:

昨天,我通过 Cloudflare 代理的 API 服务器 (api.domain.com/getCards) 的一个特定请求总是返回空白的 304 响应。因此,我继续在谷歌上搜索这意味着什么,结果发现当页面仍本地缓存在浏览器中时,服务器/代理会返回 304。

但是在弄乱了我的 Cloudflare 设置后,我最终为所有请求添加了一个页面规则,以 api.domain.com/* 的缓存状态为 Bypass,因为我读到这基本上会忽略缓存,但这无济于事,事实上,它使情况变得更糟,因为现在我收到 304 对于我向 API 服务器发出的每个请求。

现在的问题是,昨天在收工之前,我删除了我拥有的所有页面规则,并希望早上我的 API 服务器能够再次正常运行(对于我的其他服务),但它仍然会为向它发出的每个请求返回 304。

我用 java 请求确认了 304,该请求给出了响应代码 304 和谷歌开发工具。Chome dev tools

所以我已经测试过:

  • 打开Cloudflare的开发模式并清除所有缓存,几个小时后没有结果
  • 重新添加 API 的服务器 DNS 记录,但未成功
  • 在各种浏览器上尝试过,例如 Chrome(隐身)、DuckDuckGo 和 Edge
  • 尝试在我的 java 客户端上使用 和 请求标头,这应该强制非缓存响应,但没有工作Cache-ControlPragmaExpires
  • 手动更改 /getCards 响应的内容,看看 cloudflare 是否会检测到更改并给我一个正确的响应而不是 304,但不幸的是
  • 我添加了DNS记录 api2.domain.com(而不是 api.domain.com)以查看它是否仍被缓存,但 api2.domain.com 给出相同的响应(空白304)

更奇怪的是,我的 HTML 站点可以正常返回,并且也在 Cloudflare 的代理后面运行。

这个问题昨天开始发生,当时我将一些在本地运行的相同测试设置发布到 cloudflare 后面的公共 API 服务器,这些设置运行良好。

我几乎 100% 确定 Cloudflare 正在返回 304,我现在最终从 cloudflare 中删除了我的 API 服务器的 DNS 记录并将其移动到我的本地域管理器,但 DNS 记录仅在 2 - 4 小时内更新,所以我稍后会用结果更新我的帖子。

最后,需要明确的是,在这种情况开始发生之前,我已经向 cloudflare 后面的同一台服务器发出了许多类似的请求,这些请求工作正常。

在这一点上,我愿意尝试几乎任何事情来让我的网站再次运行,但不知道下一步该怎么做。 我是不是忽略了什么?

缓存 python-requests dns google-developer-tools

评论

0赞 Kevin Christopher Henry 11/10/2023
如果您想了解缓存,我建议您查看 RFC 9110。您说问题在发布新代码时就开始了,所以我要做的第一件事是查看该版本与上一个有效版本之间的差异,特别是查看影响缓存标头或重新验证的内容。然后,我会看看当您直接使用 API 服务器而不是通过 Cloudflare 时,响应是否符合预期。然后,我会在第一次加载资源时查看(并发布)初始 200 响应中的响应标头。
0赞 JavaPro123 11/10/2023
@KevinChristopherHenry 我上传的代码中实际上没有差异,我的任何请求也没有返回 304。就像我说的,我不得不用谷歌搜索它,因为我甚至不知道 304 是什么。我的意思是,我的公共 API 服务器包含比我的本地 API 服务器更多的代码/请求方法(因为我使用差异项目来更改每个项目的本地 API,但将它们上传到同一个 API 服务器)
0赞 JavaPro123 11/11/2023
@KevinChristopherHenry 正如预期的那样,我的本地 API 服务器仅返回带有实际 JSON 响应的 200(就像公共 API 服务器在问题发生之前所做的那样): imgur.com/a/HO0lyah
0赞 JavaPro123 11/11/2023
@KevinChristopherHenry 好吧,很抱歉浪费你的时间。似乎是我添加到服务器的三行代码的问题,这些代码应该可以修复错误的请求,这基本上使我的服务器甚至对正确的请求返回无效响应。不知道为什么 Cloudflare 会为无效请求返回 304,猜猜我在压力大了将近 2 天后学到了一些东西......谢谢,我想,将此问题标记为已解决。
0赞 Kevin Christopher Henry 11/11/2023
很高兴你弄清楚了。

答: 暂无答案