Я работаю над селенными тестами (написанными на С# с помощью хром-webdriver) для веб-приложения javascript, использующего серверный сервер, работающий на WebApi 5.2.4. Это CORS с очень разрешительными настройками:
namespace SealingService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
// etc...
}
}
}
Обычно все работает так, как ожидалось. Но на некоторых машинах, когда сервер запускается тестовыми сценариями, клиент сталкивается с ошибками CORS при каждом запросе. Консоль chrome dev показывает, что стандартный Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
предварительной Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
сообщение. Журналы сервера показывают, что запросы OPTION доходят до него, и он отправляет ответ.
Когда я пытаюсь получить доступ к любому из маршрутов API вручную, сервер возвращает общую страницу ASP.NET 404. Это заставляет меня думать, что наша конфигурация CORS действительно может работать правильно, но сервер не запускается/не настроен правильно с помощью нашего тестового скрипта, поэтому маршруты не регистрируются. Таким образом, все маршруты API возвращают страницу 404, которая, очевидно, не поддерживает CORS.
Это applicationhost.config, используемый IIS во время тестов. Таким образом, сервер запускается тестовым скриптом:
public static Process StartIIS(string siteName)
{
return Process.Start(@"C:\Program Files (x86)\IIS Express\iisexpress.exe", $"/site:{siteName} /config:{_applicationHostConfigFilePath}");
}
Ошибки возникают только на некоторых машинах, и мы не можем понять, что между ними настроено по-разному. Я пробовал использовать флаг Chrome --disable-web-security
но, похоже, это не имеет никакого значения.