ASP.NET не может правильно обрабатывать разделенные запятыми файлы файлов comma
-
25-09-2019 - |
Вопрос
Согласно с 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 для будущей совместимости.