Я делаю запрос CORS POST и устанавливаю заголовок Content-Type в json. Это вызывает запрос Preflight OPTIONS для срабатывания (это хорошо и ожидаемо)
На этот запрос OPTIONS ответят с помощью 200 OK, но это не происходит из моего приложения WebAPI.
У меня есть специальный обработчик сообщений на месте, и он никогда не попадает, так что запрос получает IIS перед тем, как поразить ASP.NET.
Я нашел несколько сообщений по этому вопросу, и они говорят следующее
-
Убедитесь, что WebDav удален/удален/отключен - СОВЕРШЕННО
-
Убедитесь, что OPTIONSVerbHandler удален/изменен для использования aspnet_isapi.dll - TRIED BOTH
-
Убедитесь, что extensionlessURLHandler содержит глагол OPTIONS - DONE
Однако мой запрос параметров по-прежнему увозят. Под этим я подразумеваю, что IIS отвечает на 200 OK, но не включает заголовок Access-Control-Allow-Origin в ответе. Он не включает этот заголовок, потому что он никогда не попадает в мой код WebAPI CORS, который бы установил этот заголовок.
Два лучших сообщения, которые я мог найти, похожи на мою проблему:
здесь: JQuery застрял в преддверии CORS и ответе призрака IIS
и здесь: http://brockallen.com/2012/10/18/cors-iis-and-webdav/
Я попытался включить отслеживание Failed Request (FERB) в IIS и настроить его на отслеживание всех 200 кодов состояния. Я никогда не вижу, чтобы запрос параметров регистрировался... Не уверен, что это означает, что FERB не отслеживает запросы OPTIONS или мне нужно что-то изменить в настройках FERB, чтобы отслеживать запросы OPTIONS, или если это ключ к чему моя проблема?
Это ASP.NET WebAPI 2.0, работающий на IIS 7.5 (также проверен на IIS 8 и IISExpress с одинаковыми результатами) Неважно, какой браузер (Chrome, FF и IE не работают одинаково)
Я пробовал все, что мог найти по этому вопросу, но по-прежнему не могу исправить свою проблему.
Помогите мне StackOverflow, вы - моя единственная надежда.