【发布时间】:2023-07-30 19:38:01
【问题描述】:
我正在开发一个以nest.js 作为后端的next.js 应用程序。现在,即使我在我的 Nest.js 的 main.ts 文件中启用了 cors,我也遇到了 cors 错误。
这是我的 main.ts 文件。
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import cookieParser from 'cookie-parser';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
if (process.env.APP_ENV !== 'production') {
app.enableCors({
allowedHeaders: '*',
origin: '*',
credentials: true,
});
} else {
app.enableCors({
origin: process.env.FE_URL,
credentials: true,
});
}
app.use(cookieParser());
await app.listen(process.env.PORT || 5000);
}
bootstrap();
我也尝试了以下方法。
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import cookieParser from 'cookie-parser';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.enableCors({
allowedHeaders: '*',
origin: '*',
credentials: true,
});
app.use(cookieParser());
await app.listen(process.env.PORT || 5000);
}
bootstrap();
我也试过了
app.enableCors({
origin: 'http://localhost:3000',
credentials: true,
});
现在,从_app.js 的前端,我正在定义 Axios 全局配置,如下所示。
axios.defaults.baseURL = 'http://localhost:5000';
axios.defaults.withCredentials = true;
然后在我的login.tsx 文件中,我将请求发送到nest.js 应用程序,如下所示。
const {data } = await axios.post('/auth/login', values);
这里的 values 是一个有用户名和密码的对象。
这是错误。
我还尝试了其他 * 问题的所有其他解决方案。但他们都没有解决我的问题。它实际上在几天前工作。我不知道发生了什么。
我在这里做错了什么?现在它一直在驱使我。如果需要,我可以提供更多代码。
【问题讨论】:
-
@jub0bs 我也尝试像
origin: http://localhost:3000一样写它。还是不行。 -
您正在使用通配符 (
*),不仅用于来源,还用于标题。正如我在上面链接到的 MDN Web Docs 中所解释的,这不能与凭证请求一起使用。相反,请尝试allowedHeaders: ['content-type']。 -
实际的错误信息是什么?有不同类型的 CORS 错误。
-
@derpirscher 查看截图。
标签: typescript cors nestjs