Wt
4.11.1
|
A resource request. More...
#include <Wt/Http/Request.h>
Classes | |
class | ByteRange |
A single byte range. More... | |
class | ByteRangeSpecifier |
A byte range specifier. More... | |
Public Types | |
typedef std::map< std::string, std::string > | CookieMap |
Cookie map type. More... | |
Public Member Functions | |
const ParameterMap & | getParameterMap () const |
Returns the query parameters. More... | |
const UploadedFileMap & | uploadedFiles () const |
Returns uploaded file parameters. More... | |
const ParameterValues & | getParameterValues (const std::string &name) const |
Returns all values for a query parameter. More... | |
const std::string * | getParameter (const std::string &name) const |
Returns a query parameter value. More... | |
const UploadedFile * | getUploadedFile (const std::string &name) const |
Returns an uploaded file. More... | |
::int64_t | tooLarge () const |
Returns a non-zero value that exceeded the maximum allowed request. More... | |
ResponseContinuation * | continuation () const |
Returns a continuation object. More... | |
std::string | serverName () const |
Returns the (public) server name. More... | |
std::string | serverPort () const |
Returns the server port. More... | |
std::string | path () const |
Returns the request path. More... | |
std::string | pathInfo () const |
Returns the request path info. More... | |
std::string | queryString () const |
Returns the request query string. | |
std::string | urlScheme () const |
Returns the url scheme used. More... | |
std::istream & | in () const |
Returns the input stream for parsing the body. More... | |
std::string | contentType () const |
Returns the "Content Type" of the request body. More... | |
int | contentLength () const |
Returns the "Content Length" of the request body. More... | |
std::string | userAgent () const |
Returns the user agent. More... | |
std::string | clientAddress () const |
Returns the IP address of the client. More... | |
std::string | hostName () const |
Returns the host name used in the request. More... | |
const CookieMap & | cookies () const |
Returns the cookies. More... | |
const std::string * | getCookieValue (const std::string &cookieName) const |
Returns a cookie value. More... | |
std::string | headerValue (const std::string &field) const |
Returns a header value. More... | |
std::vector< Message::Header > | headers () const |
Returns all headers. More... | |
std::string | getCgiValue (const std::string &varName) const |
Returns a raw CGI environment variable. More... | |
std::string | method () const |
Returns the request method. More... | |
ByteRangeSpecifier | getRanges (::int64_t filesize) const |
Returns the requested ranges as in the HTTP Range header. More... | |
WSslInfo * | sslInfo () const |
Returns information on the SSL client certificate or nullptr if no authentication took place. More... | |
std::string | urlParam (const std::string ¶m) const |
Get the value for the given URL parameter. More... | |
const std::vector< std::pair< std::string, std::string > > & | urlParams () const |
Get all URL parameters. More... | |
A resource request.
The request provides information of parameters, including uploaded files, that were present in a request to a WResource.
typedef std::map<std::string, std::string> Wt::Http::Request::CookieMap |
std::string Wt::Http::Request::clientAddress | ( | ) | const |
Returns the IP address of the client.
The (most likely) IP address of the client that is connected to this session.
This is taken to be the first public address that is given in the Client-IP header, or in the X-Forwarded-For header (in case the client is behind a proxy). If none of these headers is present, the remote socket IP address is used.
int Wt::Http::Request::contentLength | ( | ) | const |
Returns the "Content Length" of the request body.
std::string Wt::Http::Request::contentType | ( | ) | const |
Returns the "Content Type" of the request body.
ResponseContinuation* Wt::Http::Request::continuation | ( | ) | const |
Returns a continuation object.
Returns a non-zero continuation object if the request is a continuation request for an earlier response for which a continuation was created.
const CookieMap& Wt::Http::Request::cookies | ( | ) | const |
Returns the cookies.
This returns all cookies set for this request.
Not all clients may support cookies or have cookies enabled.
std::string Wt::Http::Request::getCgiValue | ( | const std::string & | varName | ) | const |
Returns a raw CGI environment variable.
Retrieves the value for the given CGI environment variable (like "SSL_CLIENT_S_DN_CN"
), if it is defined, otherwise an empty string.
const std::string * Wt::Http::Request::getCookieValue | ( | const std::string & | cookieName | ) | const |
const std::string * Wt::Http::Request::getParameter | ( | const std::string & | name | ) | const |
Returns a query parameter value.
Returns the first value defined for a parameter named name
or nullptr
if the paramter does not exist.
const ParameterMap& Wt::Http::Request::getParameterMap | ( | ) | const |
Returns the query parameters.
Returns parameters that were passed to the query, either inside the URL, or inside a POST request, excluding uploaded files.
const ParameterValues & Wt::Http::Request::getParameterValues | ( | const std::string & | name | ) | const |
Returns all values for a query parameter.
Returns all values defined for a parameter named name
. A single parameter may have multiple values, e.g. in the query string '?param=value1¶m=value2'.
Returns an empty list if the query parameter does not exist.
Request::ByteRangeSpecifier Wt::Http::Request::getRanges | ( | ::int64_t | filesize | ) | const |
Returns the requested ranges as in the HTTP Range header.
The filesize is used to adapt the ranges to the actual file size as per rules of RFC 2616. If the file size is unknown, pass -1.
You should check if the ranges are satisfiable using ByteRangeSpecifier::isSatisfiable().
const UploadedFile * Wt::Http::Request::getUploadedFile | ( | const std::string & | name | ) | const |
Returns an uploaded file.
Returns the file uploaded for a parameter named name
or nullptr
if the parameter does not contain does not exist or was not associated with a file input field.
std::vector< Message::Header > Wt::Http::Request::headers | ( | ) | const |
Returns all headers.
std::string Wt::Http::Request::headerValue | ( | const std::string & | field | ) | const |
Returns a header value.
Returns an empty string if the header was not present.
std::string Wt::Http::Request::hostName | ( | ) | const |
Returns the host name used in the request.
This returns the value of the Host header, or if behind a trusted reverse proxy, the value of the X-Forwarded-Host header if it is present.
std::istream & Wt::Http::Request::in | ( | ) | const |
Returns the input stream for parsing the body.
If the request was a POST with as contentType() "application/x-www-form-urlencoded" or "multipart/form-data", the input stream will already have been consumed by Wt's CGI parser, and made available as parameters in the request.
std::string Wt::Http::Request::method | ( | ) | const |
Returns the request method.
Returns the HTTP request method ("GET", "POST", or other).
std::string Wt::Http::Request::path | ( | ) | const |
Returns the request path.
Returns the path at which this request was received (excluding internal path information): it is the path at which the application or resource is deployed.
std::string Wt::Http::Request::pathInfo | ( | ) | const |
Returns the request path info.
Returns additional path information internal to the path().
std::string Wt::Http::Request::serverName | ( | ) | const |
Returns the (public) server name.
Returns the public server name. This is the server name that is advertised to outside, which is determined in a OS specific way.
std::string Wt::Http::Request::serverPort | ( | ) | const |
Returns the server port.
Returns the server port number through which this request was received.
WSslInfo * Wt::Http::Request::sslInfo | ( | ) | const |
Returns information on the SSL client certificate or nullptr
if no authentication took place.
This function will return nullptr
if no verification took place, Wt was compiled without SSL support, or the web server was configured without client SSL certificates.
This method may return a pointer to a WSslInfo object, while the authentication may have failed. This depends on the configuration of the web server. It is therefore important to always check the verification result with WSslInfo::clientVerificationResult().
Session-bound resources will probably not use this method, but rely on the validation done at the start of the session (see sslInfo() in WEnvironment). Static resources on the other hand don't have an associated session, so using this method you can perform client authentication verification.
The object returned is owned by Request and will be deleted when the Request object is destroyed.
Header | Description | Apache variable | nginx variable | Notes |
---|---|---|---|---|
X-SSL-Client-Verify | Verification state: NONE, SUCCESS, FAILED:reason, or GENEROUS. Only SUCCESS is treated as valid. | %{SSL_CLIENT_VERIFY}s | $ssl_client_verify | Always required |
X-SSL-Client-S-DN | Subject DN | %{SSL_CLIENT_S_DN}s | $ssl_client_s_dn | Required if X-SSL-Client-Cert is not present |
X-SSL-Client-I-DN | Issuer DN | %{SSL_CLIENT_I_DN}s | $ssl_client_i_dn | Required if X-SSL-Client-Cert is not present |
X-SSL-Client-V-Start | Validity Start, formatted like: Oct 29 15:19:20 2019 GMT | %{SSL_CLIENT_V_START}s | $ssl_client_v_start | Required if X-SSL-Client-Cert is not present |
X-SSL-Client-V-End | Validity End, formatted like: Oct 29 15:19:20 2019 GMT | %{SSL_CLIENT_V_END}s | $ssl_client_v_end | Required if X-SSL-Client-Cert is not present |
X-SSL-Client-Cert | PEM encoded client certificate | %{SSL_CLIENT_CERT}s | $ssl_client_escaped_cert | Required if previous four headers are not present, needs Wt to be built with OpenSSL |
X-SSL-Client-Cert
header will significantly increase the size of all requests. If it is not provided, then WSslCertificate::toPem() and WSslCertificate::toDer() will return the empty string. The certificate chain is not passed through, so WSslInfo::clientPemCertificateChain() will be empty. HAProxy also has variables containing client certificate information, but they are in a different format that is not currently supported. int64_t Wt::Http::Request::tooLarge | ( | ) | const |
Returns a non-zero value that exceeded the maximum allowed request.
const UploadedFileMap& Wt::Http::Request::uploadedFiles | ( | ) | const |
Returns uploaded file parameters.
std::string Wt::Http::Request::urlParam | ( | const std::string & | param | ) | const |
Get the value for the given URL parameter.
Example:
If a static resource is deployed at /tags/${tag}, then, if a request is made for /tags/Wt, urlParam("tag") will return "Wt".
If the given parameter is not available, an empty string is returned.
const std::vector< std::pair< std::string, std::string > > & Wt::Http::Request::urlParams | ( | ) | const |
Get all URL parameters.
std::string Wt::Http::Request::urlScheme | ( | ) | const |
Returns the url scheme used.
This is either "http"
or "https"
If we're behind a trusted reverse proxy, the value of X-Forwarded-Proto will be used if it is present.
std::string Wt::Http::Request::userAgent | ( | ) | const |
Returns the user agent.
The user agent, as reported in the HTTP User-Agent
field.