Se você estava indo para armazenar um agente de usuário em um banco de dados, qual o tamanho que você acomodaria?
Eu encontrei este artigo de technet que recomenda manter o UA abaixo de 200. Não parece que isso esteja definido na especificação HTTP, pelo menos não o que encontrei. Meu UA já possui 149 caracteres e parece que cada versão do .NET será adicionada a ele.
Eu sei que posso analisar a corda e quebrá-la, mas prefiro que não.
EDIT
Baseado neste blog, o IE9 será alterado para enviar a string curta do UA. Esta é uma boa mudança.
http
database-design
http-headers
user-agent
JoshBerke
fonte
fonte
Respostas:
A especificação HTTP não limita o comprimento dos cabeçalhos. No entanto, os servidores da Web limitam o tamanho do cabeçalho que aceitam, lançando
413 Entity Too Large
se exceder.Dependendo do servidor da web e de suas configurações, esses limites variam de 4KB a 64KB (total para todos os cabeçalhos).
fonte
Minha opinião sobre isso:
UNIQUE BINARY(32)
(ou 64 ou 128, dependendo do tamanho do seu hash) e faça o hash do UserAgentAlgumas seqüências de caracteres da UA podem ficar obscenamente longas. Isso deve poupar as preocupações. Também imponha um comprimento máximo no seu INSERTer para manter o UA em baixo de 4KB. A menos que alguém esteja lhe enviando um e-mail no user agent, ele não deve ultrapassar esse comprimento.
fonte
Notamos algo assim em nossos logs do apache. Parece anormal para mim, mas vejo essas coisas regularmente nos logs, principalmente nos sistemas Windows.
fonte
642
números. Os quatro primeiros números são sempre6
,7
,8
, ou9
. O quinto número é sempre0
. Os três últimos são sempre603
,703
,803
, ou903
. Talvez alguém possa reconhecer esse padrão? (Half-life 3 confirmado?) #Como é para fins de banco de dados e não há limite prático, eu usaria uma tabela UserAgents com UserAgentId como Int e UserAgentString como NVarChar (MAX) e usaria uma chave estrangeira na tabela original.
fonte
Como isso é grande ?:
fonte
Não há limite declarado, apenas o limite da maioria dos servidores HTTP. Porém, mantendo isso em mente, eu implementaria uma coluna com um comprimento fixo razoável (use o Google para encontrar uma lista de agentes de usuários conhecidos, encontre os maiores e adicione 50%) e apenas recorte qualquer agente de usuário que seja muito longo - excepcionalmente O agente de usuário longo provavelmente é único o suficiente, mesmo quando cortado, ou é o resultado de algum tipo de bug ou tentativa de "hack".
fonte
Eu tenho esse agente de usuário hoje, sobrecarregando o campo de armazenamento do nosso fornecedor:
Ridículo! 229 caracteres?
Portanto, pegue esse tamanho, dobre-o, dobre-o novamente e você deve estar definido até o próximo erro da Microsoft (talvez desta vez no próximo ano).
Vá maior que 1000!
fonte
Vou dar a resposta padrão:
Pegue o maior valor possível que você possa imaginar, o dobro, e essa é a sua resposta.
fonte
Suponha que a sequência do agente do usuário não tenha limite em seu comprimento e prepare-se para armazenar esse valor. Como você viu, o comprimento é imprevisível.
No Postgres, há um tipo de texto que aceita cadeias de comprimento ilimitado. Use isso.
Muito provavelmente, você terá que começar a truncar em algum momento. Chame de bom em um incremento razoavelmente útil (200, 1k, 4k) e jogue fora o resto.
fonte
Aqui está um que é 257
fonte
Não é uma indicação do tamanho de um agente de usuário, pois há muitas respostas mostrando os casos extremos que eles encontraram, mas o mais longo que pôde encontrar em http://www.useragentstring.com/pages/useragentstring.php? nome = Tudo tinha 250 bytes.
fonte