【发布时间】:2019-01-04 02:56:16
【问题描述】:
我正在尝试将一个对象从我的 Angular 应用程序发布到 ASP.NET WebApi,但我收到以下错误。
无法加载http://localhost:64859/api/comments:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,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();
}
【问题讨论】:
标签: c# asp.net angular asp.net-web-api fetch