Angular 6 .net Web Api否'Access-Control-Allow-Origin'标头错误

问题描述 投票:0回答:2

我正在使用Angular 6,Vs Studio的Vs代码开发.net Core Web Api。错误如下; - 无法加载资源:服务器响应状态为500(内部服务器错误) - 请求的资源上没有“Access-Control-Allow-Origin”标头。因此不允许来源'http:// localhost:4200'访问。响应是HTTP状态代码500。

// I added to Startup.cs;
ConfigureServices === >>> services.AddCors ();
Configure === >>>> app.UseCors (bldr => bldr.WithOrigins ("http: // 
localhost: 4200") .WithMethods ("GET", "POST"). AllowAnyHeader ());

问题是;问题在get方法中得到解决,数据被检索但在post方法中不起作用。提前致谢。

angular asp.net-web-api asp.net-core .net-core asp.net-core-mvc
2个回答
1
投票

有多种方法可以解决这个问题,dotnet core documentation讨论了如何处理CORS。

这往往只是在开发过程中的一个问题,所以这是我解决这个问题的首选方法。

将CORS规则添加到允许开发期间的所有内容的服务中

if (_env.IsDevelopment())
{
    services.AddCors(options =>
    {
        options.AddPolicy("AllowAll",
                  p => p.AllowAnyOrigin()
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                        .AllowCredentials());
    });
}

然后将创建的规则添加到Application Builder:

if (_env.IsDevelopment())
{
    app.UseCors("AllowAll");
}

另外

还有一个适用于谷歌浏览器的CORS browser extension,我不确定其他浏览器。

当我不想干涉请求/响应头时这是我的转到,并且是一个快速解决方案,当这个问题发生在其他项目而不仅仅是.net核心时。

但是有一点警告,有时这个插件不起作用。


0
投票

重要的是要记住,services.AddCors()必须在services.AddMvc()之前,与app.UseCors()app.UseMvc()相同。

© www.soinside.com 2019 - 2024. All rights reserved.