Этот http://www.mail-archive.com/users@tomcat.apache.org/msg52249.html имеет ответ, но на самом деле не объясняет почему.
То есть, кодируя @ (что является недопустимым символом в файлах cookie версии 0), для файла cookie, отправляемого в ответе, устанавливается версия 0 (приемлемо для IE), а не 1 (другой формат и, следовательно, недопустимый IE) .
Моя проблема была такой же. Мы были Base64, кодирующей наше значение cookie и отправляющей его вниз. Тем не менее, Base64 содержит символы, такие как '=' ..., что снова запрещено в версии 0 и, следовательно, неприемлемо для IE.
Для меня остается загадка: какая-то часть стека достаточно умна, чтобы признать, что значение cookie недопустимо в качестве файла cookie версии 0, и решает отправить ответ в виде файла cookie версии 1 (включая явную версию). число, «недопустимые» символы, поле max-age, а не expires, и т. д.) Я не знаю, принимает ли решение Tomcat, Faces, Spring или javax.servlet версию.
Итог: кодировка URI для значения cookie гарантирует, что cookie, установленный в браузере, имеет версию 0 и поэтому сохраняется в IE.