我正在使用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方法中不起作用。提前致谢。
有多种方法可以解决这个问题,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核心时。
但是有一点警告,有时这个插件不起作用。
重要的是要记住,services.AddCors()
必须在services.AddMvc()
之前,与app.UseCors()
和app.UseMvc()
相同。