已多次发布此问题,但我尝试了几种解决方案,但这些解决方案对我不起作用。我正在按角度制作API服务,该服务需要使用基本身份验证来获取用于其他端点的承载令牌。该API用.NET Core编写。
我的代码很简单:
private GetToken() {
let delta = new Date().getTime() - this.tokenTimestamp.getTime();
const options = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Cache-Control': 'no-cache',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Auth-Token, content-type',
'Authorization': 'Basic ' + btoa(this.user + ':' + this.pass)
})
};
console.log(options);
if (delta >= 60000) {
this.http.post<Response>(this.url + '/api/Auth/Token/', { username: this.user, password: this.pass }, options)
.subscribe(
(val) => {
console.log("POST call successful value returned in body", val);
},
response => {
console.log("POST call in error", response);
},
() => {
console.log("The POST observable is now completed.");
});
}
}
非常感谢您的帮助!
答案 0 :(得分:1)
即使看起来存在CORS问题,该问题可能存在也可能不存在,但首先您需要解决404 Not Found错误。同样在我们的应用程序中,当未找到404错误时,即使CORS配置已完美设置,404错误通常也会伴随CORS错误出现。
要对此进行测试,请打开Postman。创建一个到localhost:50897 / api / Auth / Token /的POST请求,看看是否仍收到404。如果是,则需要确保端点正常。
编辑:
在Startup.cs中,确保在Configure(..){}
中有此设置app.UseCors(builder => builder
.WithOrigins("http://localhost:4200", "url2") // url2 would be the IP address that your angular app is deployed under in IIS
.AllowCredentials()
.AllowAnyHeader()
.AllowAnyMethod());