Search code examples
httpurlquery-stringquerystringparameter

What is a valid URL query string?


What characters are allowed in an URL query string?

Do query strings have to follow a particular format?


Solution

  • Per https://www.rfc-editor.org/rfc/rfc3986

    In section 2.2 Reserved Characters, the following characters are listed:

    reserved = gen-delims / sub-delims

    gen-delims = “:” / “/” / “?” / “#” / “[” / “]” / “@”

    sub-delims = “!” / “$” / “&” / “’” / “(” / “)” / “*” / “+” / “,” / “;” / “=”

    The spec then says:

    If data for a URI component would conflict with a reserved character’s purpose as a delimiter, then the conflicting data must be percent-encoded before the URI is formed.

    Next, in section 2.3 Unreserved Characters, the following are listed:

    unreserved = ALPHA / DIGIT / “-” / “.” / “_” / “~”