Я столкнулся с проблемой, аналогичной OP, через много лет с IE9, который, к сожалению, все еще висит.
Каждый браузер, который я пробовал, включая IE10 +, выглядел нормально с передачей файлов cookie моему бэкэнду, но IE9 просто отбрасывал их. Кажется, не имеет значения, какие атрибуты были в куки. Главная страница и API были на тех же доменах, и куки совпадали, схемы были одинаковыми. Я ничего не делал с IFRAMES, поэтому P3P 'potato' hack не помог.
Итак, я начал проводить исследования того, что в IE9 может отличаться. Эта публикация Microsoft была очень поучительной, и в ней рассказывается обо всех действиях IE8 и IE9, направленных на устранение дыр в безопасности CORS:
- Должен использовать HTTP (S), и обе конечные точки должны использовать одну и ту же схему
- Необходимо использовать GET / POST
- Не разрешены пользовательские заголовки
- Разрешен только текст / простой тип контента
- Более чувствителен к настройкам зоны безопасности
- Печенье будет удалено из запроса
Этот последний вопрос о файлах cookie заставил меня задуматься, что если IE9 подумает, что я делаю межсайтовый запрос? Это, конечно, выглядело так, как будто его так хорошо сбили. Я уже проверил некоторые очевидные вещи, такие как схема и домен, но, возможно, я не все проверил.
Решение? В частности, я использовал reqwest в качестве моей библиотеки ajax. У него есть параметр кросс-происхождения, который я по какой-то причине оставил равным true
. Установка его (правильно) в false сделала свое дело - все мои куки были подобраны сервером. Так что это была глупая ошибка, но я выучил одну или две вещи.
Надеюсь, это кому-нибудь поможет!