На этой неделе мы начали получать журналы ошибок от пользователей браузера Samsung на планшетах и смартфонах, где иногда используются запятые для разделения двух файлов cookie в заголовке Cookie HTTP, отправляемом на наш сервер, вместо стандартной точки с запятой,Текущий RFC, определяющий файлы cookie и управление состоянием HTTP в целом, RFC 6265 , указывает, что только точка с запятой принимается в качестве разделителя, но два предшествующих ему RFC (2965 и 2109 ) указывают, что "сервер также должен принимать запятую (,) в качестве разделителя между значениями cookie для будущей совместимости."
Этоимеет два последствия с нашей стороны:
- Предполагается, что проблемный файл cookie содержит объект в кодировке Base64.Поскольку запятая не интерпретируется как разделитель, следующий файл cookie в заголовке добавляется в конец значения Base64, которое мы пытаемся преобразовать, и преобразование завершается неудачей.
- Файл cookie, следующий за разделителем запятых,«потерян» в том, что касается собственной обработки файлов cookie в ASP.NET.
Было бы довольно легко взломать что-нибудь вместе с нашей стороны, чтобы исправить сбойную конвертацию.Я мог бы искать запятую и игнорировать ее и все, что следует за ней, если она присутствует, и преобразование будет успешным.Но тогда я должен был бы вручную обработать восстановление "потерянных" куки, и действительно, я хотел бы избежать подобных взломов, если это возможно.Учитывая состояние обновлений ОС на телефонах Android, я совершенно безнадежен, что исправление для этого когда-либо выйдет.Но поскольку в старых RFC предлагалось поддерживать запятые в качестве разделителей на стороне сервера, я надеюсь, что где-нибудь будет что-то настраиваемое, и я смогу получить это поведение бесплатно, не прибегая к неумелым хакам в коде нашего приложения.
Так что на самом делея спрашиваю:
- Поддерживает ли ASP.NET MVC запятые в качестве разделителей в заголовке Cookie HTTP?
- Если да, есть ли способ включить это наследие?поведение на MVC 5 / Framework 4.5.2?