CORS 策略已阻止从源访问“http://localhost...”处的 XMLHttpRequest:
Posted
技术标签:
【中文标题】CORS 策略已阻止从源访问“http://localhost...”处的 XMLHttpRequest:【英文标题】:Access to XMLHttpRequest at 'http://localhost...' from origin has been blocked by CORS policy: 【发布时间】:2019-04-15 10:49:28 【问题描述】:我有一个 .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 状态。
【问题讨论】:
【参考方案1】:预检请求的传递:
if (context.Request.Method == "OPTIONS")
return;
另请阅读:Enable Cross-Origin Requests (CORS) in ASP.NET Core
【讨论】:
不确定会去哪里?在 asp.net 核心代码中? 在接收请求的方法中。【参考方案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);
【讨论】:
以上是关于CORS 策略已阻止从源访问“http://localhost...”处的 XMLHttpRequest:的主要内容,如果未能解决你的问题,请参考以下文章
CORS 策略已阻止从源对 X 的 XMLHttpRequest 的 CORS 访问
CORS 策略已阻止从源 URL 访问 URL 的 XMLHttpRequest [重复]
CORS 策略已阻止从源访问“http://localhost...”处的 XMLHttpRequest: