在Angular和ASP.NET Core 3.1中配置CORS策略,可以按照以下步骤进行操作:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAll", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
// 其他服务配置代码
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 其他中间件配置代码
app.UseCors("AllowAll");
// 其他中间件配置代码
}
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
// ...
],
imports: [
// ...
HttpClientModule
],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: ApiInterceptor, multi: true }
],
bootstrap: [AppComponent]
})
export class AppModule { }
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class ApiInterceptor implements HttpInterceptor {
intercept(request: HttpRequest, next: HttpHandler): Observable> {
request = request.clone({
setHeaders: {
'Access-Control-Allow-Origin': '*', // 允许所有源访问
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE', // 允许的请求方法
'Access-Control-Allow-Headers': 'X-Requested-With, Content-Type, Authorization' // 允许的请求头
}
});
return next.handle(request);
}
}
import { HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) { }
getData() {
return this.http.get('https://example.com/api/data');
}
以上就是Angular和ASP.NET Core 3.1配置CORS策略的解决方法,通过上述配置,可以实现在Angular项目中与ASP.NET Core后端进行跨域请求。