In World Wide Web, a query string is the part of a URL that contains data to be passed to CGI programs.
When a web page is requested via the HyperText Transfer Protocol, the server locates a file in its file system based on the requested URL. This file may be a regular file or a program. In the second case, the server may (depending on its configuration) run the program, sending its output as the required page. The query string is a part of the URL which is passed to the program. This way, the URL can encode some data that is accessible to the program generating the web page.
Syntax
URLs that identify files on the server have typically the following form (URLs may be quite more complicated):
http://server/path/file
If the requested web page is to be generated by a program, the URL can be constructed as follows:
http://server/path/program?query_string
When a server receives a request for such a page, it runs the program (if configured to do so) passing the query_string
unchanged to the program in some way. The question mark is used as a separator and is not part of the query string.
The query string is passed as is to the program unchanged.
If the URL results from submitting a web form, the query string has the following form:
parameter1=value1¶meter2=value2¶meter3=value3...
- The query string is composed of a series of parameter=value pairs
- The parameter-value pairs are each separated by an equal sign.
- The series of pairs is separated by the ampersand, '&'.
For each field of the form, the query string contains a pair parameter=value. Web forms may include fields that are not visible to the user, and these fields are included in the query string when the form is submitted.
URL Encoding
The parameter=value pairs in the query string are encoded according to a schema known as URL Encoding. This is necessary because some characters cannot be part of a URL (for example, the space) and some other characters have a special meaning in a URL (for example, the character #
, which is used to locate a point within a page).
In particular, RFC 1738 specifies that “only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL”. All characters in a query string can be replaced by their hexadecimal value precedeed by the symbol %
. For example, the equal sign can be replaced by %3D
. All characters can be replaced this way; for the characters that are forbidden in a query string, this is not only possible but necessary.
The space character can be also represented by +
.
See also