在 .net core Web api 和 angular 6 中启用 CORS

Har*_* Es 4 c# typescript asp.net-core angular

在这里,我使用了一个 HTTP POST 请求Angular 6,它在 .net 核心 Web API 调用中命中,但我没有将响应输出返回到Angular 6控制台,并且在控制台中出现以下错误:

“从源‘ http://localhost:4200 ’访问 XMLHttpRequest 在‘ http://localhost:55654/api/login/auth ’已被 CORS 策略阻止:没有‘Access-Control-Allow-Origin’标头是出现在请求的资源上。”

但我有点困惑,如果它是任何CORS启用访问问题,它不会命中 Web API 调用。但它击中了 API 调用,我没有得到响应。

Angular 6 HTTP POST 要求:

this.http.post("http://localhost:55654/api/login/auth", credentials, {
  headers: new HttpHeaders({
 "Content-Type": "application/json"
      })
  }).subscribe(response => {
      let token = (<any>response);
      localStorage.setItem("jwt", token);
    }, err => {

    });
Run Code Online (Sandbox Code Playgroud)

CORS在以下方法中启用了.NetCore Web API

Configure方法Startup.cs

...
app.UseCors(options =>
  options.WithOrigins("http://localhost:4200")
    .AllowAnyMethod()
    .AllowAnyHeader());
 ...
Run Code Online (Sandbox Code Playgroud)

ConfigureServices方法Startup.cs

...
services.AddCors();
...
Run Code Online (Sandbox Code Playgroud)

Paw*_*elC 5

在 Startup.cs 上添加 ConfigureServices:

services.AddCors();
Run Code Online (Sandbox Code Playgroud)

在配置添加

app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
Run Code Online (Sandbox Code Playgroud)

这解决了你的问题