首页 文章

无法从Angular UI发布到ASP.NET WebApi

提问于
浏览
1

我试图将一个对象从我的Angular应用程序发布到ASP.NET WebApi,但是我收到以下错误 .

无法加载http:// localhost:64859 / api / comments:对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头 . 因此不允许来源'http:// localhost:4200'访问 . 响应具有HTTP状态代码404.如果不透明响应满足您的需要,请将请求的模式设置为“no-cors”以获取禁用CORS的资源 .

在.service.ts中,我发送一个带有fetch()的POST .

fetch(this.Url, {
  method: 'post',
  body: JSON.stringify(obj), 
  headers:{
    'Content-Type': 'application/json'
    'Access-Control-Allow-Origin': '*' // Do I need this?
  } 
}).then(function (response) {
  console.log(response.text());
  return response.json();
}).then(function(data) {
  console.log('Error:', data);
});

这是我的API中的控制器 .

// POST api/<controller>
[HttpPost]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public string Post([FromBody]Obj obj)
{ ... }

在Startup.cs中......

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddCors(options =>
    {
        options.AddPolicy("AllowAllOrigins",
            builder => { builder.AllowAnyOrigin(); });
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseMvc();
}

1 回答

  • 1

    我想你必须在“AddMvc”/“UseMvc”之前添加“AddCors”或“UseCors”,如下所示:

    services.AddCors(o => o.AddPolicy("AllowAllOrigins", builder =>
                {
                     builder.AllowAnyMethod()
                       .AllowAnyHeader()
                       .AllowAnyOrigin();
                }));
    services.AddMvc();
    

    或者在Configure方法中

    app.UseCors("AllowAllOrigins");
    app.UseMvc();
    

    并改变这一部分

    [EnableCors(origins: "*", headers: "*", methods: "*")]
    

    [EnableCors("AllowAllOrigins")]
    

    并且不要在fetch中设置“Access-Control-Allow-Origin”

    试试这个并告诉我结果

相关问题