在Angular 6和.Net Core 2.2应用中,如果出现CORS(跨域资源共享)错误,可以通过以下步骤解决:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
// 其他服务配置
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors("CorsPolicy");
// 其他中间件配置
}
上述配置允许来自任何来源的请求访问后端API,并允许使用任何HTTP方法和头部。
在Angular应用的代码中,确保使用正确的URL来访问后端API。例如,如果后端API位于"http://localhost:5000",则在Angular代码中调用API时应使用该URL。
如果使用带有自定义标头的请求,例如授权标头,需确保在Angular代码中设置withCredentials标志:
import { HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) { }
makeRequest() {
const url = 'http://localhost:5000/api/endpoint';
const headers = { 'Authorization': 'Bearer Token' };
this.http.get(url, { headers, withCredentials: true }).subscribe(response => {
// 处理响应
});
}
使用withCredentials标志将带有授权标头的请求视为跨域请求。
[EnableCors("CorsPolicy")]
public class MyController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
// 处理请求
return Ok();
}
}
在上述示例中,[EnableCors("CorsPolicy")]特性应与控制器或操作方法一起使用,以确保返回正确的CORS标头。
通过执行上述步骤,您应该能够解决Angular 6和.Net Core 2.2应用中的CORS错误。