【问题标题】:Getting 404 Not Found on OPTIONS with NestJS使用 NestJS 在 OPTIONS 上找不到 404
【发布时间】:2018-10-25 12:31:45
【问题描述】:

我是 NestJS 的新手,在我的网络应用程序尝试查询的每条路线上,它都在 OPTIONS 请求上失败,得到:

{"statusCode":404,"error":"Not Found","message":"Cannot OPTIONS /认证”}

但是尝试直接 GET 或 POST 请求可以正常工作。

【问题讨论】:

    标签: node.js typescript cors http-options-method nestjs


    【解决方案1】:

    经过一些研究,我意识到我只需要enable CORS(访问控制允许来源),我可以通过编辑我的main.ts 并将cors: true 传递给NestFactory.create 选项来做到这一点(第二个参数)。

    import { NestFactory } from '@nestjs/core';
    import { AppModule } from './app.module';
    
    async function bootstrap() {
      const app = await NestFactory.create(AppModule, { cors: true });
      await app.listen(3000);
    }
    bootstrap();
    

    【讨论】:

    • cors 是一个内置功能,详情请看这里:docs.nestjs.com/techniques/cors :)
    • @KamilMyśliwiec 这仍然对我不起作用。 app.enableCors() 也没有。所有 HTTP OPTIONS 请求都以 404 失败。不知道出了什么问题
    • @KamilMyśliwiec CORS 文档在 nestjs 文档站点上的什么位置?现在似乎有一个重定向
    【解决方案2】:

    有关 CORS 的一些额外信息,如果您通过以下方式启用它:

    import { NestFactory } from '@nestjs/core';
    import { AppModule } from './app.module';
    
    async function bootstrap() {
      const app = await NestFactory.create(AppModule, { cors: true });
      await app.listen(3000);
    }
    bootstrap();
    

    这将允许来自任何域的跨域请求。这通常不是安全最佳实践。

    如果你想允许 CORS 拦截你的预检请求,但也只允许来自服务器内部的源请求,你可以使用这个配置:

    .....
      const app = await NestFactory.create(ApplicationModule, {cors: {
        origin: true,
        preflightContinue: false,
      }});
    .....
    

    【讨论】:

      【解决方案3】:

      任何人仍在寻找答案

      app.enableCors();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-30
        • 2021-09-26
        • 2014-06-18
        • 1970-01-01
        相关资源
        最近更新 更多