即使在服务器上启用了我的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.
答案 0 :(得分:4)
您在URL中缺少协议。由于错误状态,仅支持以下协议:
http,数据,chrome,chrome扩展名,https。
因此尝试使用http://localhost:3000/api/auth/login