Internet Explorer 11 не добавляет заголовок Origin в запрос CORS?

моя проблема зависит от нескольких предположений, которые я придерживаюсь.

предположение nr 1: заголовок Origin

на Origin заголовок требуется браузером для размещения запроса CORS (Cross Origin Resource Sharing).

Википедия:

чтобы инициировать запрос перекрестного происхождения, браузер отправляет запрос с исходный HTTP-заголовок.

в HTML5 камни:

первое, что нужно отметить, это то, что действительный запрос CORS всегда содержит заголовок Origin. Этот заголовок Origin добавляется браузером и может не контролируется пользователем.

W3:

если источник URL-адреса запроса не совпадает с исходным URL-адресом origin, установите источник origin в глобальный уникальный идентификатор [..].

предположение nr 2: поддержка Internet Explorer 10+ ПДБС

см.caniuse.com и использовать google для нескольких сотен других источников различных видов, претендующих на поддержку.

предположение nr 3: разные порты-это другое происхождение

ресурсы, использующие разные номера портов, считаются разного происхождения:

Википедия

два ресурса считаются одного и того же происхождения, если и только если все эти значения являются именно тот же. [..] Отказ-тот же протокол и хост другой порт.

Сеть Разработчиков Mozilla

две страницы имеют одинаковое происхождение, если протокол, порт (если один указано), и host одинаковы для обеих страниц.

проблема:

Internet Explorer 11 не отправляет Origin заголовок при выполнении запроса CORS к тому же домену "localhost", но с использованием разных портов (от 8411 до 8080). Opera, FireFox и Chrome отправляют заголовок Origin. Тем не менее, все продолжают говорить, что CORS поддерживается в Internet Explorer 10+?

2 ответов


определение Internet Explorer "того же происхождения" отличается от других браузеров. Вижу IE исключения раздел документации MDN по политике того же происхождения:

Internet Explorer имеет два основных исключения, когда дело доходит до той же политики происхождения:

  • Целевой Зоны: если оба домена находятся в высоконадежной зоне e.g, корпоративные Домены, то те же ограничения происхождения не являются применяется
  • порт: IE не включает порт в те же компоненты Origin, поэтому http://company.com:81/index.html и http://company.com/index.html считаются из того же источника и никаких ограничений не применяются.

поэтому, если ваш запрос кросс-происхождения происходит через разные порты или в одной из доверенных зон IE, IE не будет рассматривать запрос как кросс-происхождение и не будет видеть необходимости добавьте .


Я просто случайно наткнулся на сообщает ошибка на связанный с Microsoft сайт это ясно описывает мою проблему. Сотрудники Microsoft быстро пришли к выводу, что:

недостаточно информации для воспроизведения вашего поведения наблюдающий.

с момента их первого комментария и их первая попытка (?), им фактически удалось запустить два разных веб-сервера на разных портах и воспроизвести проблему. В последнем комментарии Microsoft говорится, что они "рассматривают возможность нацеливания исправления в будущем".