¿es válido link / href con solo parámetros (comenzando con el signo de interrogación)?


¿Es válido este enlace?

<a href="?lang=en">eng</a>

Sé que los navegadores lo tratan como se espera y sé que el enlace vacío también estaría bien, pero ¿está bien especificar solo los parámetros?

Tengo curiosidad porque signo de interrogación ("?") es solo una convención por la mayoría de los servidores HTTP (AFAIK), aunque admito que es prevaleciente.

Así que, para recapitular:

  1. Todos los navegadores interpretan este correctamente?

  2. ¿Esto está en RFC?

  3. Puedo esperar ¿algún problema con esto?

UPDATE: la acción deseada al hacer clic es redirigir a la misma página, pero con diferentes parámetros GET ("lang=en" en el ejemplo anterior).

Author: Community, 2011-10-24

2 answers

Sí, lo es.
Puede encontrarlo en RFC 1808-Localizadores de Recursos Uniformes relativos :

Dentro de un objeto con una URL base bien definida de
Base: <URL:http://a/b/c/d;p?q#f>
las URLs relativas se resolverían de la siguiente manera:

5.1. Ejemplos normales

?y = <URL:http://a/b/c/d;p?y>

RFC 3986-Uniform Resource Identifier (URI): Generic Syntax repite lo mismo, y agrega más detalles, incluyendo gramática:

relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

relative-part = "//" authority path-abempty
             / path-absolute
             / path-noscheme
             / path-empty     #; zero characters

Ahora, eso no quiere decir que todos los navegadores lo implementen de acuerdo con el estándar, pero parece que esto debería ser seguro.

 33
Author: Kobi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-24 07:08:15

Sí - y llegará a la url actual con los parámetros que está pasando.

Es muy conveniente usarlo en situaciones en las que desea asegurarse de no cruzar el límite actual de la página/formulario y seguir golpeando el mismo ActionMethod o lo que esté escuchando con diferentes parámetros.

 0
Author: Matas Vaitkevicius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-20 10:22:51