在服务器上设置请求后,Cors仍然阻止请求

时间:2019-09-10 19:34:02

标签: javascript node.js angular typescript nestjs

即使在服务器上启用了我的CORS,Chrome CORS仍会阻止API。我阅读了启用CORS的官方文档。我的后端是用Nest.js编写的,前端是用Ionic / Angular编写的。

除了官方文档外,我还尝试了其他各种用户建议的解决方案,例如设置选项,但是它们都不起作用。

使用邮递员时,API调用工作正常。

这是服务器代码:

const app = await NestFactory.create(AppModule);
  const options = {
    origin: '*',
    headers: '*',
    methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
    preflightContinue: true,
    optionsSuccessStatus: 204,
    credentials: true,
  };
  app.enableCors(options);
  await app.listen(3000);

在这里进行http呼叫:

  this.http.post(`${this.config.serverAddress}/api/auth/login`,{'username': 'test', 'password': 'password'})
        .subscribe(d=>{
            console.log(d);
        })

最后,这是chrome错误消息:

zone-evergreen.js:2952 Access to XMLHttpRequest at 'localhost:3000/api/auth/login' from origin 'http://localhost:8100' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

1 个答案:

答案 0 :(得分:4)

您在URL中缺少协议。由于错误状态,仅支持以下协议:

  

http,数据,chrome,chrome扩展名,https。

因此尝试使用http://localhost:3000/api/auth/login

进行请求