ЗАПРОС ОПЦИИ Http с cors в web api с аутентификацией

#asp.net-web-api #cors

#asp.net-web-api #cors

Вопрос:

Я использую Microsoft.AspNet.WebAPI.Cors для поддержки запроса перекрестного происхождения в соответствии с этим

https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

Мои веб-API настроены на использование аутентификации Windows, и каждый запрос, поступающий от angular, имеет значение withCredentials, равное true. Все работает с HTTP GET, но с запросом PUT отправляется предполетный запрос, который становится несанкционированным. Мой вопрос заключается в том, делает ли Microsoft.AspNet.WebAPI.Cors поддерживает настройку запроса ОПЦИИ.

Комментарии:

1. По моему опыту, имена параметров могут конфликтовать, попробуйте использовать разные имена, и, кроме того, вы можете опубликовать здесь свой контроллер, чтобы все могли видеть и помогать.

2. извините, какие параметры связаны с запросом параметров HTTP. на самом деле, как я понимаю, в запросе ОПЦИИ нет параметров, переданных

3. Я имею в виду, в вашем запросе PUT.

4. Я попытался отправить тот же запрос PUT, открыв chrome с отключенной защитой, и он работал нормально. Похоже, что параметры в порядке.

5. ну, нам будет сложно определить проблему без примеров кодов, конфигурации или чего-либо еще.

Ответ №1:

Поместите это в свой Global.asax.cs

(Я уверен, что вы либо нашли решение, либо отказались, но это ссылка, которую я нашел в Google, когда искал решение этой проблемы.)

 protected void Application_BeginRequest()
{
    if (Request.HttpMethod == "OPTIONS")
    {
        Response.StatusCode = (int)HttpStatusCode.OK;
        Response.AppendHeader("Access-Control-Allow-Origin", Request.Headers.GetValues("Origin")[0]);
        Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
        Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        Response.AppendHeader("Access-Control-Allow-Credentials", "true");
        Response.End();
    }
}