不允许 COR 和 504 网关超时

问题描述 投票:0回答:1

我有一个使用 Express 构建的后端 API,它调用 OpenAI。我还有一个 React 前端和 nginx 代理管理器。

PROD 设置为 React 客户端 > cloudflare DNS > NGINX 代理管理器 > 调用 OpenAI 的 Express API。

DEV 设置只是在 localhost:3000 上反应客户端,在 localhost:3001 上运行 api 服务器,在我的机器上运行,从 localhost:3001 Express api 调用 openai

突然在 PROD 中我收到:

Access to fetch at 'https://api.example.com/upload' from origin 'https://example.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
home.jsx:59 
    
    
 POST https://api.example.com/upload net::ERR_FAILED 504 (Gateway Timeout)

cors 在我的 api 服务器上配置如下:

const allowedOrigins = ['https://example.com'];
app.use(helmet());
app.use(cors({
  origin: function (origin, callback) {
    if (!origin || allowedOrigins.indexOf(origin) !== -1) {
      callback(null, true);
    } else {
      callback(new Error('Not allowed by CORS'));
    }
  },
}));

所以,我无法弄清楚为什么会抛出 COR 错误。

从我的客户那里获取电话:

const response = await fetch(`https://${apiUrl}/upload`, {
        method: 'POST',
        body: formData,
      });

我的服务器端出现错误:

Error: Not allowed by CORS
17|leadgen |     at origin (file:///root/lead-gen/leadgen-api/indext.js:29:16)
17|leadgen |     at /root/lead-gen/leadgen-api/node_modules/cors/lib/index.js:219:13
17|leadgen |     at optionsCallback (/root/lead-gen/leadgen-api/node_modules/cors/lib/index.js:199:9)
17|leadgen |     at corsMiddleware (/root/lead-gen/leadgen-api/node_modules/cors/lib/index.js:204:7)
17|leadgen |     at Layer.handle [as handle_request] (/root/lead-gen/leadgen-api/node_modules/express/lib/router/layer.js:95:5)
17|leadgen |     at trim_prefix (/root/lead-gen/leadgen-api/node_modules/express/lib/router/index.js:328:13)
17|leadgen |     at /root/lead-gen/leadgen-api/node_modules/express/lib/router/index.js:286:9
17|leadgen |     at Function.process_params (/root/lead-gen/leadgen-api/node_modules/express/lib/router/index.js:346:12)
17|leadgen |     at next (/root/lead-gen/leadgen-api/node_modules/express/lib/router/index.js:280:10)
17|leadgen |     at expressInit (/root/lead-gen/leadgen-api/node_modules/express/lib/middleware/init.js:40:5) 

我的开发设置中一切运行良好,并且之前在 Prod 中运行,我进行了一些更新,然后开始收到网关超时和 cors 错误,但是当我将更改回滚到以前的工作版本时,我仍然收到的错误。所以,我不知道会发生什么变化。

任何见解或帮助将不胜感激,如果我可以提供更多详细信息,请告诉我。

reactjs node.js express nginx cloudflare
1个回答
0
投票

我没有向 OpenAI 发出多个较小的请求,而是将其合并为更少的大型请求。我还更新了 Nginx 中的 proxy_timeout,但可能会测试我能做的最低限度是超时,而不会遇到超时错误。

© www.soinside.com 2019 - 2024. All rights reserved.