通过angular连接到Web API调用时出现未知错误。
我尝试了一切,它在邮递员中正常工作,但在本地主机上没有Angular 8
login(username: string, password: string) {const httpOptions = {
headers: new HttpHeaders(
{
"Authorization": "Basic " ,
"Access-Control-Allow-Origin":"*",
'content-type':'application/json'
})
}
//return this.http.post<any>(`${config.apiUrl}/users/authenticate`, { username, password })
return this.https.post<any>(`https://localhost:53595/api/users/authenticate`, { username, password },httpOptions )
.pipe(
map(user => {
// login successful if there's a jwt token in the response
if (user && user.token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify(user));
this.currentUserSubject.next(user);
}
return user;
}));
}
答案 0 :(得分:0)
正如您所说的,它是从 Postman 而不是从 Localhost 工作的,那么我怀疑它是 CORS错误,About CORS。
您肯定会得到类似的东西。
没有访问控制权限来源
这意味着不允许您托管应用程序的源服务器向服务器发出任何请求。
据我所知,此错误需要从服务器/ API 端进行处理。
或者您可以使用chrome扩展名禁用它,可以获取here。
有关如何在不同服务器上处理CORS的更多信息,如下所示:
答案 1 :(得分:0)
如果它是.net核心,请进入Startup.cs,并通过https服务后端和前端,并启用CORS
public void ConfigureServices(IServiceCollection services)
{
...
services.AddCors();
...
}
public void Configure(IApplicationBuilder app)
{
...
app.UseCors(builder =>
builder.WithOrigins("YOUR_FRONTEND_URL")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials());
...
}