¿Existe alguna restricción formal sobre qué caracteres están permitidos en los nombres de parámetros de URL?HTTP URL - caracteres permitidos en los nombres de los parámetros
He estado leyendo RFC3986 ("Uniform Resource Identifier (URI): Generic Syntax") pero no he llegado a una conclusión definitiva.
Sé que hay limitaciones prácticas, sino que en realidad se prohibirá a hacer algo como:
param with\funny<chars>=some_value
, siempre y cuando me escape correctamente:
caracteresparam%20with%1cfunny%3cchars%3e=some_value
Es exactamente por eso que he estado preguntando ... http://stackoverflow.com/questions/814613/how-to-read-data-from-url-using-javascript - Creo que mi respuesta necesitaría una revisar para corregirlo en situaciones inusuales. – Tomalak
Ah, eso complica la situación sustancialmente. Especialmente desde que usar '&' como delimitador es solo una convención; otros podrían ser utilizados en su lugar, p. ',' y ';' solían usarse bastante. Además, muchos motores de servidor (PHP, Rails, ...) admiten argumentos anidados, por lo que este sería un URI legal con consulta: http://example.com/?a=b;c[1]=x;c[2] = y ... Muchas aplicaciones web realmente usan esta notación de consulta para datos de formulario (opciones, casillas de verificación ...) para obtener datos parecidos a un array. –
Así que supongo que se reduce a "no hay una única función correcta para extraer los parámetros de una URL", a menos que esté dispuesto a aceptar que "c [1] = x" es una convención del lado del servidor, y el parámetro lo que está buscando * de hecho * se llama "c [1]" en el cliente (lo que sería correcto en cuanto a los hechos, pero resultará extraño para los que están acostumbrados a la programación del lado del servidor ...). – Tomalak