is link / href with just parameters (starting with question mark) valid?

johndodo picture johndodo · Oct 24, 2011 · Viewed 28.6k times · Source

Is this link valid?

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

I know the browsers treat it as expected and I know the empty link would be ok too - but is it ok to specify just the parameters?

I am curious because question mark ("?") is only a convention by most HTTP servers (AFAIK), though I admit it is a prevailing one.

So, to recap:

  1. will all browsers interpret this correctly?

  2. is this in RFC?

  3. can I expect some trouble using this?

UPDATE: the intended action on click is to redirect to the same page, but with different GET parameters ("lang=en" in above example).

Answer

Kobi picture Kobi · Oct 24, 2011

Yes, it is.
You can find it in RFC 1808 - Relative Uniform Resource Locators:

Within an object with a well-defined base URL of
Base: <URL:http://a/b/c/d;p?q#f>
the relative URLs would be resolved as follows:

5.1. Normal Examples

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

RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax restates the same, and adds more details, including the grammar:

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

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

Now, that is not to say all browsers implement it according to the standard, but it looks like this should be safe.