Проблема политики CORS только началась без изменений кода - «Политика CORS: заголовок« Access-Control-Allow-Origin »содержит несколько значений» - PullRequest
0 голосов
/ 07 февраля 2020

Привет всем, у меня странная проблема с политикой 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;
        }
    }

1 Ответ

0 голосов
/ 10 февраля 2020

нашел его; починил это! Я надеюсь, что это может помочь кому-то в будущем ...

На балансировщике нагрузки F5 кто-то добавил dev.mycompany.com к тому же VIP, что и myapp.dev.mycompany.com. И когда они это сделали, они также добавили irule для учета источника разрешений, но наши приложения делают это в коде / конфигурации, поэтому было несколько. Они отказались от правила и собираются дать dev.mycompany.com свой собственный VIP. Сделано на пару дней !!

...