我收到 CORS 错误但实际上不是 CORS 错误(更像是 504)的原因可能是什么?

What can be reason I got CORS error but it was actually NOT a CORS error (more like a 504)?

我收到 CORS 错误但实际上不是 CORS 错误的原因是什么?请参考以下图片了解我的意思:

控制台输出请求已被 CORS 阻止的错误 policy:No 'Access-Control-Allow-Origin' header 存在于请求的资源上。

但实际上并非如此。 'Access-Control-Allow-Origin' header 是响应 header.

这是因为 php 代码写道, $response->header('Access-Control-Allow-Origin', $request->server('HTTP_ORIGIN'));Access-Control-Allow-Origin:*

基本相同

但是对于那个错误请求,响应是,即没有响应。

原因实际上是 php 进程被 PHP Fatal error: Allowed memory exhausted

挂起

我假设在这种情况下我会得到 504 网关超时,即上游没有响应。但为什么控制台反而输出 CORS 错误?

您正在查看来自服务器的成功响应,其中确实包含正确的 CORS header。

检查 header 次失败的请求。由于它是内部 PHP 错误(达到内存限制),因此永远不会达到添加 CORS 的代码。


所以最后:

  1. 服务器无法添加 CORS headers,出现 5XX 错误
  2. 浏览器由于缺少 CORS 而阻止响应处理