【发布时间】:2022-01-22 23:54:24
【问题描述】:
我有两台服务器,前端(Next.js)和后端(express.js api 服务器)。
前端服务器正在运行,没有任何添加。但我有一个后端的 nginx 代理。
到目前为止一切都很好,因为它们还没有连接。
当我从前端服务器向后端服务器发出 fetch get 调用时,它通常会给出一个 cors 错误,因为来源不同。
为此,我使用 cors 设置后端服务器:
// /src/middlewares/cors.ts
import cors from 'cors';
const whitelist = new Set(['http://192.168.1.106:3000', 'https://192.168.148.132']);
// frontend: http://192.168.1.106:3000
// backend: https://192.168.148.132
const corsOptions = {
optionsSuccessStatus: 200,
origin: (origin: any, callback: any) => {
console.log('origin: ' + origin);
if (whitelist.has(origin)) {
callback(null, true);
} else {
callback(new Error('Not allowed by CORS'));
}
},
// credentials: true,
};
export default cors(corsOptions);
和
// /app.ts
import cors from './middlewares/system/cors.js';
.
.
// setup cors
app.options('*', cors);
app.use(cors);
.
.
这样做之后,我就达到了我的主要目标。前端服务器可以调用后端服务器。 输出:
但这一次我发现了一个问题。我不能再向后端发送自我请求(通过自我来源)。
在处理这个问题时,我查看了上面显示的 /src/middlewares/cors.ts 文件的来源。
我在 nginx 中使用自签名 ssl 作为后端服务器。 并且conf中没有任何cors相关的头文件。
我该如何解决这种情况?
(如果我遗漏了什么,您可以在 cmets 中指出。)
【问题讨论】:
标签: javascript express nginx cors