2012-03-08 19 views
5

estoy leyendo RFC2396 en direcciones URL que dice

Muchos URI incluyen componentes que consisten en o delimitado por , ciertos caracteres especiales. Estos caracteres se llaman "reservados", ya que su uso dentro del componente URI está limitado a su propósito reservado de .

Pero la sección en la parte de consulta de URL (entre? Y #) dice

3,4. Componente de consulta El componente de consulta es una cadena de información que se debe interpretar por el recurso .

query   = *uric 

Dentro de un componente de consulta, los caracteres ";", "/", "?" ":", "@", "&", "=", "+", "" y "$" están reservados.

¿Cuál es el "propósito reservado de cada uno de esos personajes? Entiendo lo &, = y + se utilizan en la consulta, pero ¿qué pasa con los otros personajes?

En términos más prácticos, debería hacerlo siempre codificación URL esos personajes cuando están en la consulta navegadores y servidores que he visto mango:? e, y otros caracteres sin ser codificada

Respuesta

5

creo que la sección 2.2 de RFC 3986, que deja obsoleto RFC 2396, tiene una posible explicación. Cito:

Estos caracteres se llama "reservados", ya que pueden (o no pueden) ser definido como delimitadores por la sintaxis genérica, por cada una sintaxis específica del esquema, o por la sintaxis específica de la implementación del algoritmo de eliminación de referencias de un URI .

Creo que lo que Berners-Lee, et al. están tratando de llegar aquí es que incluso si no se usan todos los caracteres reservados en la sintaxis genérica descrita en RFC, los autores querían dejar suficiente latitud para los esquemas futuros o el código específico de implementación para poder usar esos caracteres como vieron en forma.

En cuanto a si debe codificar los caracteres, mi opinión es que debes la investigación y el uso de un Percent-Encoding Algorithm que sigue el estándar y no utilizar un no-estándar de uno o tratar de liar su propio. Por ejemplo, si usa un idioma como C# o Python, entonces las bibliotecas que vienen con esos idiomas incluyen una implementación del algoritmo que cumpla con los estándares. Para obtener más detalles sobre , la sección 2.4 de RFC 3986 cubre cuándo codificar o decodificar.

+0

Nice answer. Estoy seguro de que hay una insignia que obtienes para responder a una pregunta que tiene unos pocos meses, ¡felicitaciones! : P –

+0

Hay una insignia para eso y se llama "Revival" –

Cuestiones relacionadas