Подтвердить что ты не робот

Internet Explorer 11 не будет устанавливать файлы cookie на сайт

По какой-то причине IE11 (только IE11, протестированный с другими IE9 и IE10) не создаст сеанс на сайте, над которым я работал. Таким образом, это означает, что базовые функции, такие как логин сайта, не будут работать.

В других браузерах это работает отлично.

Я немного изучил и узнал, что IE не будет работать с доменами с подчеркиванием. Но у моего домена нет одного, и что может быть проблемой? Спасибо!

4b9b3361

Ответ 1

IE 11 не нравится значение домена в файле cookie. Оставьте его пустым.

Неправильно для IE 11:

Set-Cookie: kohanasession=foobar; expires=Tue, 09-Apr-2016 01:01:01 GMT; path=/; domain=tc.mk; httponly

Правильно для IE 11:

Set-Cookie: kohanasession=foobar; expires=Tue, 09-Apr-2016 01:01:01 GMT; path=/; httponly

Ответ 2

Я знаю, что это старо, но, надеюсь, это поможет кому-то в будущем. Вы не можете иметь пустое значение expires=; в файле cookie в IE11. Вам просто нужно оставить поле expires вообще.

Ответ 3

Это может относиться только к файлам cookie другого домена, но если кто-то находит это через Google (как и я), это может помочь.

IE11 не может устанавливать файлы cookie в зависимости от настроек конфиденциальности.

Это сработало для меня:

введите описание изображения здесь

(Свойства обозревателя → Конфиденциальность → Дополнительно → разрешить все случаи файлов cookie)

Ответ 4

У меня была эта проблема, потому что я запускал одностраничное приложение Vue. Я устанавливал файл cookie в один маршрут, а затем сразу же направлялся на другую страницу. Однако, похоже, что IE не будет отправлять файлы cookie до следующей загрузки страницы. Поэтому вместо использования pushState мне пришлось заставить браузер повторно загружать страницу.

Ответ 5

У меня недавно была эта проблема. В моем случае проблема была вызвана выполнением команды ClearAuthenticationCache при успешном входе в систему. Команда была выполнена для удаления HTTP-аутентификации, но, оказывается, она также удалит файлы cookie сеанса.

Поэтому я бы рекомендовал удалить вызов ClearAuthenticationCache, если вы выполнили его после входа в систему.

document.execCommand("ClearAuthenticationCache");

Для получения дополнительной информации см. следующую ссылку: https://blogs.msdn.microsoft.com/ieinternals/2010/04/04/understanding-session-lifetime/

Ответ 6

Глядя на файлы cookie, которые ваш сервер отправляет с датой истечения срока действия, похоже, вчера. Правильно ли установлено время на вашем сервере?

Ответ 7

Дважды вы устанавливаете один из файлов cookie сеанса: Set-Cookie: PHPSESSID=3iv5l4tn2ugkbf4vt09lilsi06; path=/ Set-Cookie: identity=1468380643; expires=Mon, 09-Jan-2017 12:31:46 GMT; path=/; domain=.tc.mk; httponly Set-Cookie: kohanasession=u5rrhtaj731h3p9s44jhp0k612; expires=Tue, 09-Feb-2016 12:31:46 GMT; path=/; domain=tc.mk; HttpOnly Set-Cookie: kohanasession=u5rrhtaj731h3p9s44jhp0k612; expires=Tue, 09-Feb-2016 12:31:46 GMT; path=/; domain=tc.mk; httponly

Internet explorer не пересылает эту информацию о файлах cookie при последовательных вызовах, в то время как, например, Chrome просто возьмет одну из "kohanasession". Попробуйте отправить "kohanasession" только один раз.

Также домен, который вы устанавливаете в cookie, является "tc.mk", а у вас есть SEO-перенаправление на www.tc.mk. Я думаю, что IE не будет использовать cookie для www в этом случае. Попробуйте настроить его на www.tc.mk

Ответ 8

Как предложил Мартин Биби, проверьте истечение срока действия вашего файла cookie и правильно установите дату на своем сервере.

Я проверил сеанс для вашего сайта и даже хром, похоже, истек.

введите описание изображения здесь

Кажется, что проблема с датой создания/истечения файла cookie и IE ведет себя иначе, чем браузеры на основе хрома. Различные файлы cookie имеют разные времена, чем другие.

Ответ 9

Я столкнулся с аналогичной проблемой с другой настройкой, я хотел бы поделиться, что это была за проблема и как я ее решил. Надеясь, что это даст идеи для решения тех, кто страдает.

Настройка

  1. Служба аутентификации, которая устанавливает файлы cookie для аутентификации, сидя на some-domain.com
  2. Реагировать на приложение, связанное и запущенное сервером Webpack на локальном хосте
  3. Запросы проходят через прокси Webpack, чтобы попасть на some-domain.com. Например
  '/api/': {
    target: 'some-domain.com',
    logLevel: 'debug',
    secure: false,
    changeOrigin: true,
    pathRewrite: {
    '^/api': '/api'
    }
  }

Проблема № 1

Поскольку моя служба аутентификации устанавливает куки на some-domain.com, и мой Реагировать App был запущен на локальном хосте, это не то печенье, прикрепленную к его запросам, и мой поток Ошибка аутентификации.

Решение

Мне пришлось переписать домен cookie, поэтому я добавил эту строку в конфигурацию прокси в веб-пакете

    cookieDomainRewrite: {
      '.some-domain.com': 'localhost'
    }

это выглядит в webpack.config.js

  devServer: {
    ...
    proxy: {
      '/api/': {
        target: 'some-domain.com',
        logLevel: 'debug',
        secure: false,
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/api'
        },
        cookieDomainRewrite: {
          '.some-domain.com': 'localhost'
        }
      }
    }
    ...
  }

Так что это нормально на chrome, firefox... но не работает в IE 11.

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

Последнее изменение, которое я должен был сделать, было

   cookieDomainRewrite: {
      '.some-domain.com': null
    }

Это сделает домен по умолчанию localhost, сохраняя его действительным для IE 11.

Подводить итоги

при работе с файлами cookie и IE убедитесь, что:

  1. ваш домен клиента и сервера совпадает
  2. используйте значение null для значения домена при работе с localhost

Ответ 10

Чтобы функциональность сохраняемости cookie работала должным образом в IE11, я обнаружил, что мне пришлось использовать метод toGMTString() (я пробовал оба метода toGMTString() и toUTCString()) для поля expires при создании печенье. Перед добавлением этого cookie не будет сохраняться после закрытия браузера.

Пример:

var expiryDate = new Date();
expiryDate.setTime(expiryDate.getTime() + (3650 * 24 * 60 * 60 * 1000));
document.cookie = 'name=value' + '; expires=' + expiryDate.toGMTString() + ';path=/';