ASP.NET не может правильно обрабатывать разделенные запятыми файлы файлов comma

StackOverflow https://stackoverflow.com/questions/2394561

Вопрос

Согласно с RFC., Отдельные файлы cookie в заголовке HTTP «Cookie» могут быть разделены запятыми, а также с запятой. Тем не менее, ASP.NET не разбирает корпус Commas правильно - он не считается запятой в качестве сепаратора, но считает это только частью значения.

НапримерЕсли клиент отправляет заголовок Cookie: a=b, c=d, Затем приложение ASP.NET увидит только один файл cookie с именем «A» со значением «B, C = D».

В качестве особого случая то же самое происходит, когда клиент отправляет несколько заголовков Cookie (один для каждого файла cookie) вместо объединения всех файлов cookie в одном заголовке. С HTTP-перспективы это полностью действительна, и в таком случае эффективное значение заголовка должно относиться к значениям всех его экземпляров, разделенных запятыми.

Кто-нибудь знает обходной путь (или, может быть, исправить?) Для этого? Я абсолютно нужно получить эту работу, потому что не контролирую клиента.

PS Это ирония, что, согласно эта нить, .NET встроенный HTTP-клиент (AKA httpwebrequest) поведение находится прямо напротив, а также вызывает проблемы. :-)

Это было полезно?

Решение

Я считаю, что самое простое решение для получения желаемого поведения (независимо от корректности стандартов) было бы создать httpModule, который правильно проанализирует эту информацию от httpContext.Request.Headers и поправленной информации в httpContext.request.cookies.

Другие советы

Оба RFC 2109 и RFC 2965 известны не описывать реальность.

Вы должны посмотреть на Проект-ietf-httpstate-cookie который является рабочим продуктом новой рабочей группы IETF Httpstate.

Версия, которую вы связали, устареют. Этот HTTP-механизм управления государством Документ является последним и величайшим, и он указывает полуобытия. Это говорит, что запятые должны быть приняты для будущей совместимости, но это не требуется:

Примечание. Для обратной совместимости сепаратор в заголовке Cookie является полутолон (;) везде. Сервер также должен принимать запятую (,) в качестве сепаратора между значениями cookie для будущей совместимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top