Если бы вы собирались хранить пользовательский агент в базе данных, какой размер вы бы разместили?
Я нашел эту техническую статью, которая рекомендует держать UA ниже 200. Похоже, что это не определено в спецификации HTTP, по крайней мере, я не нашел. Мой UA уже содержит 149 символов, и кажется, что каждая версия .NET будет добавлять к нему.
Я знаю, что могу разобрать строку и сломать ее, но я бы не хотел.
РЕДАКТИРОВАТЬ
На основе этого блога IE9 будет меняться, чтобы отправить короткую строку UA. Это хорошее изменение.
http
database-design
http-headers
user-agent
JoshBerke
источник
источник
Ответы:
Спецификация HTTP вообще не ограничивает длину заголовков. Однако веб-серверы ограничивают размер принимаемого ими заголовка,
413 Entity Too Large
если он превышает его.В зависимости от веб-сервера и его настроек эти пределы варьируются от 4 КБ до 64 КБ (всего для всех заголовков).
источник
Мой взгляд на это:
UNIQUE BINARY(32)
(или 64, или 128 в зависимости от длины хэша) и хэшировать UserAgentНекоторые строки UA могут быть неприлично длинными. Это должно избавить вас от забот. Также установите максимальную длину в вашем INSERTer, чтобы строки UA не превышали 4 КБ. Если кто-то не отправляет вам электронное письмо в пользовательском агенте, оно не должно превышать эту длину.
источник
Заметил что-то подобное в наших логах apache. Это выглядит ненормально для меня, но я регулярно вижу такие вещи в журналах в основном из систем Windows.
источник
642
цифры. Первые четыре цифры всегда6
,7
,8
или9
. Пятое число всегда0
. Последние три всегда603
,703
,803
или903
. Возможно, кто-то может узнать эту модель? (Период полураспада 3 подтвержден?)Так как это для целей базы данных и нет практического ограничения, я бы пошел для таблицы UserAgents с UserAgentId как Int и UserAgentString как NVarChar (MAX) и использовал внешний ключ в исходной таблице.
источник
Как это по большому?
источник
Там нет установленного ограничения, только ограничение большинства HTTP-серверов. Имея это в виду, однако, я бы реализовал столбец с разумной фиксированной длиной (используйте Google, чтобы найти список известных пользовательских агентов, найдите самый большой и добавьте 50%), и просто обрежьте любой пользовательский агент, который является слишком длинным - любой исключительно Длинный пользовательский агент, вероятно, достаточно уникален, даже когда обрезан, или является результатом какой-то ошибки или попытки взлома.
источник
Я получил этот пользовательский агент сегодня, переполнив поле хранения нашего поставщика:
Смешной! 229 символов?
Так что возьмите этот размер, удвойте его, удвойте его снова, и вы должны быть настроены до следующего промаха Microsoft (возможно, на этот раз в следующем году).
Перейти больше, чем 1000!
источник
Я дам вам стандартный ответ:
Возьмите максимально возможное значение, которое вы можете себе представить, удвойте его, и это ваш ответ.
источник
Предположим, что строка агента пользователя не имеет ограничений по длине, и подготовьтесь к сохранению такого значения. Как вы видели, длина непредсказуема.
В Postgres есть текстовый тип, который принимает строки неограниченной длины. Используйте это.
Скорее всего, в какой-то момент вам придется начинать усечение. Назовите это хорошим с достаточно полезным приращением (200, 1k, 4k) и отбросьте все остальное.
источник
Вот тот, который 257
источник
Не является показателем того, насколько большим может быть пользовательский агент, поскольку есть множество ответов, показывающих крайние случаи, с которыми они сталкивались, но самый длинный из них можно найти на http://www.useragentstring.com/pages/useragentstring.php? имя = все было 250 байтов.
источник