У меня есть веб-интерфейс ASP.NET Core, и я пытаюсь опубликовать его с помощью приложения Angular6.
По запросу GET это работает нормально, но когда я пытаюсь сделать сообщение, я всегда получаю эту ошибку:
На запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Origin 'http://localhost:4200' поэтому не разрешен доступ
Что я пробовал. Startup.cs:
services.AddMvc();
services.AddCors(options => options.AddPolicy("AllowCors",
builder =>
{
builder
.AllowAnyOrigin()
.WithMethods("GET", "PUT", "POST", "DELETE", "OPTIONS")
.AllowAnyHeader();
}));
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors("AllowCors");
app.UseMvc();
}
А в моем контроллере:
[Route("api/[controller]")]
[EnableCors("AllowCors")]
public class SearchController : Controller {
//code
//Here I get the error
[HttpPost("{term}")]
public async Task SaveSearch([FromBody]dynamic request, string term)
{
_searchRepository.SaveSearch(term, request);
}
}
В приложении Angular:
saveSearch(term: string, res:any) {
this.http.post(`${this.serviceEndpoint}${term}`, {
term: term, origin: res.countryCode, request: res
}).subscribe();
});
EDIT:
Я тоже добавил метод OPTIONS, но все равно получаю ошибку.