É permitido que um URI (especificamente um URL HTTP) contenha um ou mais caracteres de espaço? Se um URL deve ser codificado, é +
apenas uma convenção comumente seguida ou uma alternativa legítima?
Em particular, alguém pode apontar para uma RFC que indica que uma URL com um espaço deve ser codificada?
Motivação para a pergunta: durante o teste beta de um site, observei que alguns URLs foram construídos com espaços. O Firefox pareceu fazer a coisa certa, o que me surpreendeu! Mas eu queria poder apontar os desenvolvedores para uma RFC para que eles sentissem a necessidade de corrigir esses URLs.
Respostas:
Conforme RFC 1738 :
fonte
Por que ele precisa ser codificado? Uma solicitação é assim:
Existem 3 campos separados por um espaço em branco. Se você colocar um espaço no seu URL:
Você sabe que possui 4 campos, o servidor HTTP informará que é uma solicitação inválida.
3 campos => válido
Nota: na string de consulta (depois de?), Um espaço geralmente é codificado como um +
ao invés de
fonte
Resposta mais curta: não, você deve codificar um espaço; que é correto para codificar um espaço como
+
, mas apenas na cadeia de consulta; no caminho que você deve usar%20
.fonte
Os URLs são definidos na RFC 3986 , embora outras RFCs sejam relevantes também, mas a RFC 1738 seja obsoleta.
Eles podem não ter espaços, junto com muitos outros caracteres. Como esses caracteres proibidos geralmente precisam ser representados de alguma forma, existe um esquema para codificá-los em uma URL, convertendo-os em seu equivalente hexadecimal ASCII com um prefixo "%".
A maioria das linguagens / plataformas de programação fornece funções para URLs de codificação e decodificação, embora elas possam não aderir adequadamente aos padrões RFC. Por exemplo, eu sei que o PHP não.
fonte
Sim, o espaço geralmente é codificado para "% 20". Todos os parâmetros que passam para um URL devem ser codificados, simplesmente por razões de segurança.
fonte
O URL pode ter um caractere de espaço e será exibido como% 20 na maioria dos navegadores, mas as regras de codificação do navegador mudam com bastante frequência e não podemos depender de como um navegador exibirá o URL.
Então, em vez disso, você pode substituir o Caractere de Espaço na URL por qualquer caractere que ache que a tornará mais legível e 'Bonita';) ..... Os caracteres gerais preferidos são "-", "_", "+" .... mas essas não são as compulsões, portanto você pode usar qualquer caractere que não deveria estar no URL.
Evite%, &,}, {,], [, /,>, <como a Substituição de caracteres de espaço de URL, pois eles podem gerar um erro em determinados navegadores e plataformas.
Como você pode ver, o próprio estouro do Stak usa o caractere '-' como substituição de espaço (% 20).
Tenha um questionamento feliz.
fonte
Os URLs não devem ter espaços neles. Se você precisar endereçar um que o faça, use seu valor codificado de
%20
fonte
URIs e, portanto, URLs, são definidos no RFC 3986.
Se você observar a gramática definida por lá, notará que um caractere de espaço nunca pode fazer parte de uma URL sintaticamente legal, portanto, o termo "URL com um espaço" é uma contradição em si.
fonte
Para responder sua pergunta. Eu diria que é bastante comum que aplicativos substituam espaços em valores que serão usados em URLs. A razão para isso é geralmente evitar a codificação de porcentagem de leitura mais difícil (URI) que ocorre.
Confira este artigo da Wikipedia sobre codificação percentual .
fonte
O Firefox 3 exibirá
%20
s nos URLs como espaços na barra de endereço.fonte
"Is a URL allowed to contain a space?"
. Antes um comentário.