Привет всем, у меня странная проблема с политикой CORS ... Мне было интересно, видел ли кто-нибудь что-нибудь подобное, и как мне следует решить эту проблему ???
Вот проблема с CORS:
Access to XMLHttpRequest at 'https://myservice.dev.mycompany.com/api/SSO/SSOProfile' from origin 'https://myapp.dev.mycompany.com' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values 'https://myapp.dev.mycompany.com, https://myapp.dev.mycompany.com', but only one is allowed.
Множественные (повторяющиеся) значения в заголовке ответа в Chrome инструментах разработчика:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://myapp.dev.mycompany.com
Access-Control-Allow-Origin: https://myapp.dev.mycompany.com
Источники, которые мы включили для нашего атрибута cors, https://myotherapp.dev.mycompany.com,https://myapp.dev.mycompany.com
" myotherapp "в данном случае не имеет значения, поскольку мы просто пытаемся войти в систему, а myotherapp предназначен для менее используемой функции.
Вот что странно:
- Код не был развернут между последним временем его работы и временем его взлома.
- Это происходит только в нашей среде разработки. Та же база кода работает нормально локально, в тестах, stage и prod.
- Я даже пытался повторно развернуть, перезапустить пул приложений и отскочить оба (сбалансированных по нагрузке) сервера разработки.
- Я не знаю о каких-либо сетевых изменениях, серверных исправлениях или изменениях IIS в блоках разработчика.
Обстоятельства заставляют меня полагать, что это не связано с кодом, а связано с окружающей средой - IIS, балансировщик нагрузки или связанные с сетью. Я в основном пишу код, поэтому мне сложно отследить это. Я прошел через это с несколькими членами команды инфраструктуры, но мы все еще не поняли это.
Есть идеи ?? Спасибо!
Вот класс WebApiConfig, и у нас нет пользовательских заголовков CORS, определенных в конфигурации, только источники в качестве настроек приложения (см. Код ниже). Как я уже сказал, эта ошибка появилась без развертывания нового кода.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
/*
* from web.Dev.config
* <add key="corsAttribute" value="https://myotherapp.dev.mycompany.com,https://myapp.dev.mycompany.com" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
*/
var cors = new EnableCorsAttribute(ConfigurationManager.AppSettings["corsAttribute"], "*", "*");
cors.SupportsCredentials = true;
config.EnableCors(cors);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Unspecified;
}
}