Ajax POST-вызов заблокирован CORS из ASP NET Web API - Ответ на запрос перед полетом не проходит проверку контроля доступа - PullRequest
2 голосов
/ 12 марта 2020

Описание проблемы:

У меня есть два веб-проекта, которые размещены на разных доменах. При совершении ajax звонка в мой проект веб-API я получаю следующее:

Доступ к XMLHttpRequest в '' from origin '' был заблокирован политикой CORS: Ответ на предварительный запрос не проходит проверка контроля доступа: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin».


Первый проект - веб-API

Мой первый проект, который is ASP NET Web API (. Net Framework 4.8)

Я включил CORS для всех, только чтобы убедиться, что тесты проходят правильно.
В моем файле WebApiConfig у меня есть следующая строка.

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

С using System.Web.Http.Cors; выше.

Мой метод не имеет ничего особенного, как атрибуты, так как мы включили CORS глобально.

[RoutePrefix("api/Test")]
public class TestController : ApiController
{
    [Route("RequestConnection")]
    [HttpPost]
    public IHttpActionResult RequestConnection(MasterOnRequestInputModel inputModel)
    {
        ...some code logic here...
    }
}

Второй проект - JavaScript с AJAX запросом

Мои вторые проекты хотят вызвать упомянутый выше метод в Web API.

Мой ajax вызов выглядит следующим образом:

$.ajax({
    type: "POST",
    url: myUrl,
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    data: {
        'Body': body,
        'Head': head,
        'Width': width,
        'Height': height
    },
    success: screencastControllerPostSuccess
});

В Chrome запрос выглядит следующим образом:

enter image description here

Что я делаю не так?


Редактировать:

Ответ

Если вы, ребята, сделали именно то, что написано выше, у вас не должно быть абсолютно никаких проблем с CORS.

Моя проблема была с WAF , который использует наша компания. WAF отклонил мой запрос из-за потенциальной атаки. И это потому, что я отправлял HTML элементов в теле запроса. Вместе с коллегами по системному администратору мы исправили проблему.

Итак, интересная часть заключается в том, что после того, как мой запрос отклонен от WAF, он возвращает ошибку, как будто проблема в CORS. Это потому, что запрос действительно междоменный, но ответ WAF generi c после отказа в запросе не имеет заголовка Access-Control-Allow-Origin.

...