【发布时间】:2020-07-10 10:53:50
【问题描述】:
我正在尝试从 Angular 应用程序连接到我的 .net 核心 API。当我尝试这样做时,我收到一条错误消息:
Access to XMLHttpRequest at 'https://localhost:44378/api/recloadprime' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
以下是来自我的 Angular 应用程序的控制台消息:
这是我为解决错误所做的。我在 startup.cs 文件的 ConfigureServices 方法中添加了 services.addCors:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAnyCorsPolicy", policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
services.AddControllers();
services.AddDbContext<db_recloadContext>();
}
在配置方法中,我输入了以下代码:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseCors("AllowAnyCorsPolicy");
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
在我的控制器中,我有以下代码:
namespace RecLoad.Controllers
{
[Route("api/[controller]")]
[EnableCors("AllowAnyCorsPolicy")]
public class RecLoadPrimeController : ControllerBase
{
private readonly db_recloadContext _context;
public RecLoadPrimeController(db_recloadContext context)
{
_context = context;
}
我遵循了 Microsoft 文档中给出的说明以及其中一篇 stackoverflow 帖子:
https://stackoverflow.com/questions/42199757/enable-options-header-for-cors-on-net-core-web-api
和微软的文章:
https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-3.1
我花了很多时间浏览其他文档并在 startup.cs 文件中尝试了不同的代码,但这个错误并没有消失。
下面是我运行良好的 api:
[HttpGet]
public ActionResult<string> Get()
{
return "This is a test";
}
以下是我的开发者工具的标题:
我还在我的 chrome 浏览器中启用了 CORS 扩展。下图是:
我们将不胜感激。
【问题讨论】:
标签: angular .net-core cors asp.net-core-webapi