【问题标题】:Access to XMLHttpRequest at 'http://localhost...' from origin has been blocked by CORS policy:CORS 策略已阻止从源访问“http://localhost...”处的 XMLHttpRequest:
【发布时间】:2023-03-09 04:15:01
【问题描述】:
我有一个 .net 核心应用程序,它有一个 REST API 被 Angular 客户端使用,但遇到了 CORS 问题。
在.net核心里,我已经有了
app.UseCors();
在配置方法中以及将响应头设置为
Access-Control-Allow-Headers *
Access-Control-Allow-Methods *
Access-Control-Allow-Origin *
但仍然在客户端出现错误(在本地端口 4200 上运行):
从源“http://localhost:4200”访问“http://localhost/myAPI/api/Table”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态。
【问题讨论】:
标签:
c#
angular
asp.net-core
cors
【解决方案2】:
我所做的是将 cors 添加到配置服务方法中:
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy", builder =>
{
builder.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
然后在配置方法中
app.UseCors("CorsPolicy");
【解决方案3】:
如果使用 web api,您可以使用此代码:
public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
{
context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
return base.TokenEndpointResponse(context);
}