Всем привет. Есть сервис WEB API на .net core 2.1, в котором есть действие сохранения модели из формы:
[HttpPost("[action]")]
public async Task<IActionResult> Save([FromForm] Document document)
{
//Некоторые действия.
}
Так же есть клиентское приложение .net core mvc. Данные из формы к web api отправляет js. Код:
function SubmitForm(formData) {
let xhr = new XMLHttpRequest();
let form = new FormData(formData);
xhr.open('POST', 'http://localhost:57803/api/save');
xhr.onload = () => {
if (xhr.status == 200) {
alert('Все норм!');
}
else {
alert('Произошла ошибка!');
}
};
xhr.send(form);
};
Но при отправке этого запроса в консоли выпадает ошибка: Access to XMLHttpRequest at '
localhost:57803/api/save' from origin '
https://localhost:44377' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Хотя в классе StartUp web api указал следующее:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors(builder => { builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader(); });
app.UseMvc();
}
Так же стоит отметить, что есть метод удаления объекта в WEB API:
[HttpDelete("[action]/{id}")]
public async Task<IActionResult> Delete(int id)
{
//Некоторые действия.
}
И в клиентском приложении следующий код:
function deleteDoc(id, documentName) {
let xhr = new XMLHttpRequest();
xhr.open('DELETE', 'http://localhost:57803/api/delete/' + id);
xhr.onload = () => {
if (xhr.status == 200) {
deleteRow(id, documentName);
}
else {
errorDelete();
}
};
xhr.send();
};
Что странно, удаление отрабатывает нормально, а вот пост-запрос блокируется. Я уже не знаю куда копать, подскажите, пожалуйста.