J'ai activé CORS dans mon application NestJS en suivant le tutoriel officiel , donc mon main.ts
ressemble à ce qui suit:
import { FastifyAdapter, NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule, new FastifyAdapter(), { cors: true });
await app.listen(3000);
}
bootstrap();
et ça marche quand je lance l'application en utilisant npm run start:dev
.
Cependant, lorsque j'essaie de compiler d'abord l'application à l'aide de npm run webpack
, puis de l'exécuter à l'aide de node server.js
, le cors ne fonctionnera pas.
La requête http du client échouera avec:
La réponse à la demande de contrôle en amont ne réussit pas la vérification du contrôle d'accès: aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée. Origin ' http: // localhost: 8000 ' n'est donc pas autorisé à accéder. La réponse avait le code d'état HTTP 404.
D'une manière ou d'une autre, le problème était en train de le compiler en utilisant npm run webpack
. Si je le compile en utilisant prestart:prod
, cela fonctionnera.
Merci @ georgii-rychko de l'avoir suggéré via des commentaires.
Essayez d’utiliser l’approche décrite ici https://docs.nestjs.com/techniques/cors
const app = await NestFactory.create(ApplicationModule);
app.enableCors();
await app.listen(3000);
Triste de savoir que vous avez également essayé:
const app = await NestFactory.create(ApplicationModule);
app.enableCors();
await app.listen(3000);
Et ça ne marche toujours pas.
Assurez-vous que cors est activé sur votre serveur, ce qui devrait ressembler à ceci:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Accept');
next();
});
Et assurez-vous également que votre navigateur est cors pris en charge. Si tout cela ne fonctionne toujours pas, je vous conseillerai de télécharger Allow-Control-Allow-Origin extension pour Chrome, cela devrait résoudre votre problème.