The Request-URI does not refer to the RFC 3986 URI, but is a term from RFC 2616, 5.1.2 HTTP/1.1 draft standard from 1999.
The Request-URI in RFC 2616 could have been any of:
Request-URI = "*" | absoluteURI | abs_path | authority
Here, the absoluteURI
is equivalent with the RFC 3986 URI, and mainly used in HTTP proxys. Søren Løvborg explains in an answer on Stack Overflow why it is not necessary to have the full URI in this context:
In normal HTTP requests, the URL scheme and host have already been handled by the time the request is sent (and the URL fragment does not exist at the HTTP protocol level at all), meaning the Request-URI is a path-absolute-URL string, possibly followed by ?
and a URL-query string.
Request-URI seems to be replaced with the (more unambiguous) term Request Target in RFC 7230, 3.1.1 proposed standard from 2014, where a Request Line...
begins with a method token, followed by a single space (SP
), the request-target
, another single space (SP
), the protocol version, and ends with CRLF
.
request-line = method SP request-target SP HTTP-version CRLF
The Request Target term is also used in the RFC 9110, 7.1 of the Internet Standard (June 2022); URI References are defined in RFC 9110, 4.1.