Получение ошибки CORS с угловым и aspnet ядром - PullRequest
0 голосов
/ 15 мая 2018

У меня есть веб-интерфейс 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, но все равно получаю ошибку.

1 Ответ

0 голосов
/ 15 мая 2018

CORS означает, что вам необходимо настроить Access-Control-Allow-Origin со значением * (для всех) на сервере приложений.

Поскольку Angular делает предполетные запросы, я настоятельно рекомендую добавить *От 1005 * до Access-Control-Allow-Methods.

Это сильно зависит от серверов, которые вы используете, но вы не указали, как обслуживали свое приложение.;)

...