Ошибка безопасности при использовании CORS в IE10 с Node и Express

m создание приложения Backbone, размещенного наhttp://example.com который использует API, размещенный наhttps://api.example.com, Для API яиспользуя Node.js с платформой Express.js. Мое решение CORS, похоже, работает во всех основных браузерах, кроме IE (оно даже не работает в IE10).

Когда запрос инициируется из IE10, запрос никогда не попадает на сервер API. Насколько я могу судить, запрос даже не отправляется. Когда я проверяю запрос, используя IE10 'В инструментах разработчика как заголовки запроса, так и заголовки ответа остаются пустыми. Когда запрос отправляется излюбой в другом браузере запрос получен и ответ сгенерирован правильно.

Это ошибка, которую я вижу в консоли:

SCRIPT 7002: XMLHttpRequest: Network Error 0x4c7, The operation was canceled by the user.

В запросе используется jQuery:

$.ajax({
  url: apiRoot + "/endpoint",
  success: function(response) {
    // Omitted irrelevant code
  }
});

В соответствии сэтот статья, CORS отключен в IE по умолчанию и должен быть включен:

Internet Explorer игнорирует заголовки Access-Control-Allow и по умолчанию запрещает перекрестный доступ к Интернет-зоне. Чтобы включить CORS, зайдите в Инструменты->Свойства обозревателя->Вкладка «Безопасность», нажмите «Пользовательский уровень" кнопка. Найди Разное -> Получите доступ к источникам данных через настройки домена и выберите «Включить" вариант.

Конечно, когда я включаю этот параметр, запрос проходит, и все работает как надо. Однако я'мы читали, что этот параметр на самом деле не связан с CORS ине должен повлиять на это. Когда используешьэтот инструмент для проверки совместимости с CORS, IE10 проходит независимо от того, включен этот параметр или нет, что заставляет меня поверить, что CORSявляется включен и яЯ просто делаю что-то не так.

Кроме того, кажется, что все работает как надо, когда я бегуобманщик, так как Fiddler действует как прокси.

Для справки, здесьs связанный с CORS код на стороне сервера:

res.header("Access-Control-Allow-Origin", "example.com");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-File-Name, X-File-Size, X-File-Type");
res.header("Access-Control-Allow-Credentials", true);
if (req.method == "OPTIONS") {
 res.send(200);
}

Ответы на вопрос(3)

Ваш ответ на вопрос