#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();
}
}