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

Internet Explorer отправляет неправильный файл cookie, когда пути перекрываются

У нас есть несколько копий веб-приложения, которое развертывается по нескольким путям в одном домене.
Пример:

Каждый экземпляр поддерживает набор файлов cookie, каждый из которых определяет его path как "/" + .getWebDirRoot() - i.e. /abc, /xyz, /abc123

При выполнении следующего потока:

Последний шаг завершается с ошибкой, так как IE отправил нам неправильный файл cookie - он отправляет сообщение http://mydomain.com/abc вместо сообщения для http://mydomain.com/abc123

Этого не происходит в FireFox. (И я еще не пробовал какой-либо другой браузер).

Является ли это известным поведением IE (я тестировал IE9 и IE8)?
Есть ли способ преодолеть это (программным образом)?

Примечание.. Чтобы уточнить, это не происходит при переключении с http://mydomain.com/abc на http://mydomain.com/xyz - поведение строго ограничено потоками, где currentUrl.startswith(urlAssociatedWithCookie) == true

Я проверил поведение с помощью Fiddler. Я отчетливо вижу HTTP-запрос для abc123, отправленный со значением cookie, принадлежащим abc.

Я также проверил файлы cookie на FireFox, и они как ожидалось - один создан для каждого пути.

4b9b3361

Ответ 1

После исследования более чем на один день и поиска везде для описания поведения IE я ничего не придумал - кроме понимания того, что когда IE видит cookie из домена xyz и path abc, он отправит он по любому запросу, отправленному на любой URL, начинающийся с того же домена и пути, например `http://xyz/abc123 '.

Итак, в конечном итоге то, что я сделал, это изменение моего создания файла cookie, а вместо:

Name: mycookie
Path: /abc

Теперь я создаю следующее:

Name: mycookie
Path: /abc/

Это решило проблему без рикошетов - файл cookie успешно сохраняется на клиенте, и правильный файл cookie всегда отправляется на сервер.


Примечание. Я проверил RFC для HTTP файлов cookie и нашел следующее:

Путь пути запроса - соответствует заданному пути к файлу cookie, если хотя бы один из выполняются следующие условия:

o Путь файла cookie и путь запроса идентичны.

o Путь cookie - это префикс пути запроса, а последний       характер пути cookie равен% x2F ( "/" ).

o Путь файлов cookie - это префикс пути запроса, а первый       характер пути запроса, который не включен в файл cookie-       path является символом% x2F ( "/" ).

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