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

时间:2018-05-31 14:40:56

标签: angular asp.net-web-api asp.net-core .net-core asp.net-core-mvc

我正在使用Angular 6,Vs Studio的Vs代码开发.net Core Web Api。 错误如下; - 无法加载资源:服务器响应状态为500(内部服务器错误) - No' 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方法中不起作用。提前谢谢。

2 个答案:

答案 0 :(得分: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");
}

Alternatevely

Google Chrome还有一个CORS browser extension,我不确定其他浏览器。

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

但是有时会发出警告,有时这个插件无法正常工作。

答案 1 :(得分:0)

请务必记住,services.AddCors()必须位于services.AddMvc()之前,并且app.UseCors()app.UseMvc()也必须相同。