我正在尝试从我的 Angular 前端对我的 C# Web API 进行 API 调用。我已经通过 HTTP 和 HTTPS 进行了尝试。
HTTP:我收到 CORS 异常 HTTPS:我收到 CONNECTION CLOSED EXCEPTION
我也通过 Postman 尝试过它并且它有效,所以后端不应该是问题。
我正在使用 Angular HTTP 客户端。
我正在尝试从我的 Angular 前端对我的 C# Web API 进行 API 调用。我已经通过 HTTP 和 HTTPS 进行了尝试。
HTTP:我收到 CORS 异常 HTTPS:我收到 CONNECTION CLOSED EXCEPTION
我也通过 Postman 尝试过它并且它有效,所以后端不应该是问题。
我正在使用 Angular HTTP 客户端。
在 ConfigureServices 的 Startup.cs 文件中,必须存在以下代码
public void ConfigureServices(IServiceCollection services) method.
{
services.AddCors(options => options.AddPolicy("CorsPolicy",
builder => builder
.WithOrigins("http://localhost:4200", "YOUR_REQUEST_ORIGIN_URI")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()));
}
Cors 是浏览器的安全性,没有 api 中的 cors 配置在 postman 上工作,postman 不是 Web 浏览器。
尝试在您的 api 上添加 Cors 配置
安装包
Install-Package Microsoft.AspNet.WebApi.Cors
在App_Start/WebApiConfig.cs中编辑 WebApiConfig 文件
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
//change www.example.com for you domain, like localhost
var cors = new EnableCorsAttribute("www.example.com", "*", "*");
config.EnableCors(cors);
}
}
编辑Startup.cs并添加 CORS 中间件和服务
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
//change www.example.com for you domain, like localhost
builder.WithOrigins("http://example.com");
});
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
参考