我正在使用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方法中不起作用。提前谢谢。
答案 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()
也必须相同。