LambdaにのせたNestJSでapp.enableCors();を指定しているのにCORSエラーがでたので解消するまでを記録した
POSTメソッドを叩いたらエラーが出た NestJSで作成したAPIをLambdaに乗せ、API Gatewayでエンドポイントを作成した。 フロントエンドはNextJSで作成し、Vercelにデプロイした。 で、無事画面表示とGetが成功し、得たいデータが表示された。 ただPOST APIを叩いた時 Access to fetch at 'https://xxxxxx.amazonaws.com/api/v1/login' from origin 'https://xxxxxxx.vercel.app' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status. というエラーがでた。 CORSは有効にしている 上のエラーを読む限り、CORSに関するエラーということがわかる。 ただNestJSの方でCORSは有効にしている。 該当のソースは下記の通り。 const app = await NestFactory.create(AppModule); await app.init(); app.useGlobalPipes(new ValidationPipe()); app.useGlobalFilters(new HttpExceptionFilter()); // CORSの有効化 app.enableCors(); const expressApp = app.getHttpAdapter().getInstance(); return serverlessExpress({ app: expressApp }); Getはできているし、CORSもきっと有効に出来ているに違いない。 じゃあ、なんでPOSTはできないの? 沼に落ちた。 解決方法 ちなみに同じ状況に陥った人のために先に解決方法を載せておくと、下記のようにawait app....