JQuery AJAX-запрос в IE9 не отправляет заголовок Cookie - PullRequest
5 голосов
/ 26 мая 2011

Я использую ajax .get метод jQuery для получения данных с моего сервера.Прекрасно работает в Chrome, но в IE9 он не отправляет заголовок Cookie, что нарушает работу приложения.Есть идеи почему?Вот код jQuery:

$.get(this.server + 'rest/photo/' + this.profileId + '/count', function(data) {
    $('#imageCount').html(data);
});

Ответы [ 2 ]

1 голос
/ 27 июня 2011

У меня такая же проблема, я не могу заставить работать функцию jQuery .ajax().Единственный обходной путь, который я нашел, - это:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /> 

Вы можете добавить этот метатег в верхнюю часть страницы, чтобы заставить его работать.Но это не похоже на хорошее решение.Я думаю, проблема в том, что объект xmlhttprequest в IE9 отличается, поэтому jQuery не может найти соответствующий объект, поэтому ajax не запускается.

0 голосов
/ 11 февраля 2016

Я столкнулся с проблемой, аналогичной 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 сделала свое дело - все мои куки были подобраны сервером. Так что это была глупая ошибка, но я выучил одну или две вещи.

Надеюсь, это кому-нибудь поможет!

...