Skip to content
PHP Ecosystem
Explore

Request

API reference › yii › web › Request

2 subclasses

The web Request class represents an HTTP request.

It encapsulates the $_SERVER variable and resolves its inconsistency among different Web servers. Also it provides an interface to retrieve request parameters from $_POST, $_GET, $_COOKIES and REST parameters sent via other HTTP methods like PUT or DELETE.

Request is configured as an application component in Application by default. You can access that instance via Yii::$app->request.

For more details and usage information on Request, see the guide article on requests.

PropertyTypeDescriptionDefined by
$absoluteUrl read-onlystringThe currently requested absolute URL.Request
$acceptableContentTypesarrayThe content types ordered by the quality score.Request
$acceptableLanguagesarrayThe languages ordered by the preference level.Request
$authCredentials read-onlyarrayThat contains exactly two elements: - 0: the username sent via HTTP authentication, null if the username is not given - 1: the password sent via HTTP authentication, null if the password is not given.Request
$authPassword read-onlystring|nullThe password sent via HTTP authentication, null if the password is not given.Request
$authUser read-onlystring|nullThe username sent via HTTP authentication, null if the username is not given.Request
$baseUrlstringThe relative URL for the application.Request
$behaviors read-onlyarray<yii\base\Behavior<static>>List of behaviors attached to this component.yii\base\Component
$bodyParamsmixedThe request parameters given in the request body.Request
$contentType read-onlystringRequest content-type.Request
$cookies read-onlyCookieCollectionThe cookie collection.Request
$cookieValidationKeystringA secret key used for cookie validation. Default: null.Request
$csrfCookiearrayThe configuration for creating the CSRF cookie. Default: ['httpOnly' => true].Request
$csrfHeaderstringThe name of the HTTP header for sending CSRF token. Default: self::CSRF_HEADER.Request
$csrfHeaderUnsafeMethodsarray“unsafe” methods not triggered a CORS-preflight request This property is used only when both $enableCsrfValidation and $validateCsrfHeaderOnly are true. Default: ['GET', 'HEAD', 'POST'].Request
$csrfParamstringThe name of the token used to prevent CSRF. Default: '_csrf'.Request
$csrfToken read-onlynull|stringThe token used to perform CSRF validation.Request
$csrfTokenFromHeader read-onlystring|nullThe CSRF token sent via $csrfHeader by browser.Request
$csrfTokenSafeMethodsarrayThe name of the HTTP header for sending CSRF token. by default validate CSRF token on non-”safe” methods only This property is used only when $enableCsrfValidation is true. Default: ['GET', 'HEAD', 'OPTIONS'].Request
$enableCookieValidationboolWhether cookies should be validated to ensure they are not tampered. Default: true.Request
$enableCsrfCookieboolWhether to use cookie to persist CSRF token. Default: true.Request
$enableCsrfValidationboolWhether to enable CSRF (Cross-Site Request Forgery) validation. Default: true.Request
$eTags read-onlyarrayThe entity tags.Request
$headers read-onlyHeaderCollectionThe header collection.Request
$hostInfostring|nullSchema and hostname part (with port number if needed) of the request URL (e.g. https://www.yiiframework.com), null if can’t be obtained from $_SERVER and wasn’t set.Request
$hostName read-onlystring|nullHostname part of the request URL (e.g. www.yiiframework.com).Request
$ipHeadersstring[]List of headers where proxies store the real client IP. Default: ['X-Forwarded-For']. Available since 2.0.13.Request
$isAjax read-onlyboolWhether this is an AJAX (XMLHttpRequest) request.Request
$isConsoleRequestboolThe value indicating whether the current request is made via console.yii\base\Request
$isDelete read-onlyboolWhether this is a DELETE request.Request
$isFlash read-onlyboolWhether this is an Adobe Flash or Adobe Flex request.Request
$isGet read-onlyboolWhether this is a GET request.Request
$isHead read-onlyboolWhether this is a HEAD request.Request
$isOptions read-onlyboolWhether this is a OPTIONS request.Request
$isPatch read-onlyboolWhether this is a PATCH request.Request
$isPjax read-onlyboolWhether this is a PJAX request.Request
$isPost read-onlyboolWhether this is a POST request.Request
$isPut read-onlyboolWhether this is a PUT request.Request
$isSecureConnection read-onlyboolIf the request is sent via secure channel (https).Request
$method read-onlystringRequest method, such as GET, POST, HEAD, PUT, PATCH, DELETE.Request
$methodParamstringThe name of the POST parameter that is used to indicate if a request is a PUT, PATCH or DELETE request tunneled through POST. Default: '_method'.Request
$origin read-onlystring|nullURL origin of a CORS request, null if not available.Request
$parsersarrayThe parsers for converting the raw HTTP request body into $bodyParams. Default: [].Request
$pathInfostringPart of the request URL that is after the entry script and before the question mark.Request
$portintPort number for insecure requests.Request
$portHeadersstring[]List of headers where proxies store the real request port. Default: ['X-Forwarded-Port']. Available since 2.0.46.Request
$preferredLanguage read-onlystringThe language that the application should use.Request
$queryParamsarrayThe request GET parameter values.Request
$queryString read-onlystringPart of the request URL that is after the question mark.Request
$rawBodystringThe request body.Request
$referrer read-onlystring|nullURL referrer, null if not available.Request
$remoteHost read-onlystring|nullRemote host name, null if not available.Request
$remoteIP read-onlystring|nullRemote IP address, null if not available.Request
$scriptFilestringThe entry script file path.Request
$scriptUrlstringThe relative URL of the entry script.Request
$secureHeadersarrayLists of headers that are, by default, subject to the trusted host configuration. Default: ['X-Forwarded-For', 'X-Forwarded-Host', 'X-Forwarded-Proto', 'X-Forwarded-Port', 'Front-End-Https', 'X-Rewrite-Url', 'X-Original-Host']. Available since 2.0.13.Request
$securePortintPort number for secure requests.Request
$secureProtocolHeadersarrayList of headers to check for determining whether the connection is made via HTTPS. Default: ['X-Forwarded-Proto' => ['https'], 'Front-End-Https' => ['on']]. Available since 2.0.13.Request
$serverName read-onlystring|nullServer name, null if not available.Request
$serverPort read-onlyint|nullServer port number, null if not available.Request
$trustedHostsarrayThe configuration for trusted security related headers. Default: []. Available since 2.0.13.Request
$urlstringThe currently requested relative URL.Request
$userAgent read-onlystring|nullUser agent, null if not available.Request
$userHost read-onlystring|nullUser host name, null if not available.Request
$userIP read-onlystring|nullUser IP address, null if not available.Request
$validateCsrfHeaderOnlyboolWhether to use custom header only to CSRF validation of SPA. Default: false.Request
MethodDescriptionDefined by
__construct()Constructor.yii\base\BaseObject
__call()Calls the named method which is not a class method.yii\base\Component
__clone()This method is called after the object is created by cloning an existing one.yii\base\Component
__get()Returns the value of a component property.yii\base\Component
__isset()Checks if a property is set, i.e. defined and not null.yii\base\Component
__set()Sets the value of a component property.yii\base\Component
__unset()Sets a component property to be null.yii\base\Component
attachBehavior()Attaches a behavior to this component.yii\base\Component
attachBehaviors()Attaches a list of behaviors to the component.yii\base\Component
behaviors()Returns a list of behaviors that this component should behave as.yii\base\Component
canGetProperty()Returns a value indicating whether a property can be read.yii\base\Component
canSetProperty()Returns a value indicating whether a property can be set.yii\base\Component
className() staticReturns the fully qualified name of this class.yii\base\BaseObject
detachBehavior()Detaches a behavior from the component.yii\base\Component
detachBehaviors()Detaches all behaviors from the component.yii\base\Component
ensureBehaviors()Makes sure that the behaviors declared in behaviors() are attached to this component.yii\base\Component
get()Returns GET parameter with a given name. If name isn’t specified, returns an array of all GET parameters.Request
getAbsoluteUrl()Returns the currently requested absolute URL.Request
getAcceptableContentTypes()Returns the content types acceptable by the end user.Request
getAcceptableLanguages()Returns the languages acceptable by the end user.Request
getAuthCredentials()Request
getAuthPassword()Request
getAuthUser()Request
getBaseUrl()Returns the relative URL for the application.Request
getBehavior()Returns the named behavior object.yii\base\Component
getBehaviors()Returns all behaviors attached to this component.yii\base\Component
getBodyParam()Returns the named request body parameter value.Request
getBodyParams()Returns the request parameters given in the request body.Request
getContentType()Returns request content-type The Content-Type header field indicates the MIME type of the data contained in getRawBody() or, in the case of the HEAD method, the media type that would have been sent had the request been a GET.Request
getCookies()Returns the cookie collection.Request
getCsrfToken()Returns the token used to perform CSRF validation.Request
getCsrfTokenFromHeader()Request
getETags()Gets the Etags.Request
getHeaders()Returns the header collection.Request
getHostInfo()Returns the schema and host part of the current request URL.Request
getHostName()Returns the host part of the current request URL.Request
getIsAjax()Returns whether this is an AJAX (XMLHttpRequest) request.Request
getIsConsoleRequest()Returns a value indicating whether the current request is made via command line.yii\base\Request
getIsDelete()Returns whether this is a DELETE request.Request
getIsFlash()Returns whether this is an Adobe Flash or Flex request.Request
getIsGet()Returns whether this is a GET request.Request
getIsHead()Returns whether this is a HEAD request.Request
getIsOptions()Returns whether this is an OPTIONS request.Request
getIsPatch()Returns whether this is a PATCH request.Request
getIsPjax()Returns whether this is a PJAX request.Request
getIsPost()Returns whether this is a POST request.Request
getIsPut()Returns whether this is a PUT request.Request
getIsSecureConnection()Return if the request is sent via secure channel (https).Request
getMethod()Returns the method of the current request (e.g. GET, POST, HEAD, PUT, PATCH, DELETE).Request
getOrigin()Returns the URL origin of a CORS request.Request
getPathInfo()Returns the path info of the currently requested URL.Request
getPort()Returns the port to use for insecure requests.Request
getPreferredLanguage()Returns the user-preferred language that should be used by this application.Request
getQueryParam()Returns the named GET parameter value.Request
getQueryParams()Returns the request parameters given in the $queryString.Request
getQueryString()Returns part of the request URL that is after the question mark.Request
getRawBody()Returns the raw HTTP request body.Request
getReferrer()Returns the URL referrer.Request
getRemoteHost()Returns the host name of the other end of this connection.Request
getRemoteIP()Returns the IP on the other end of this connection.Request
getScriptFile()Returns the entry script file path.Request
getScriptUrl()Returns the relative URL of the entry script.Request
getSecurePort()Returns the port to use for secure requests.Request
getServerName()Returns the server name.Request
getServerPort()Returns the server port number. If a port is specified via a forwarding header (e.g. ‘X-Forwarded-Port’) and the remote host is a “trusted host” the that port will be used (see $portHeaders), otherwise the default server port will be returned.Request
getUrl()Returns the currently requested relative URL.Request
getUserAgent()Returns the user agent.Request
getUserHost()Returns the user host name.Request
getUserIP()Returns the user IP address.Request
hasEventHandlers()Returns a value indicating whether there is any handler attached to the named event.yii\base\Component
hasMethod()Returns a value indicating whether a method is defined.yii\base\Component
hasProperty()Returns a value indicating whether a property is defined for this component.yii\base\Component
init()Initializes the object.yii\base\BaseObject
off()Detaches an existing event handler from this component.yii\base\Component
on()Attaches an event handler to an event.yii\base\Component
parseAcceptHeader()Parses the given Accept (or Accept-Language) header.Request
post()Returns POST parameter with a given name. If name isn’t specified, returns an array of all POST parameters.Request
resolve()Resolves the current request into a route and the associated parameters.Request
setAcceptableContentTypes()Sets the acceptable content types.Request
setAcceptableLanguages()Request
setBaseUrl()Sets the relative URL for the application.Request
setBodyParams()Sets the request body parameters.Request
setHostInfo()Sets the schema and host part of the application URL.Request
setIsConsoleRequest()Sets the value indicating whether the current request is made via command line.yii\base\Request
setPathInfo()Sets the path info of the current request.Request
setPort()Sets the port to use for insecure requests.Request
setQueryParams()Sets the request $queryString parameters.Request
setRawBody()Sets the raw HTTP request body, this method is mainly used by test scripts to simulate raw HTTP requests.Request
setScriptFile()Sets the entry script file path.Request
setScriptUrl()Sets the relative URL for the application entry script.Request
setSecurePort()Sets the port to use for secure requests.Request
setUrl()Sets the currently requested relative URL.Request
trigger()Triggers an event.yii\base\Component
validateCsrfToken()Performs the CSRF validation.Request
createCsrfCookie() protectedCreates a cookie with a randomly generated CSRF token.Request
filterHeaders() protectedFilters headers according to the $trustedHosts.Request
generateCsrfToken() protectedGenerates an unmasked random token used to perform CSRF validation.Request
getIpValidator() protectedCreates instance of IpValidator.Request
getSecureForwardedHeaderParts() protectedReturns decoded forwarded headerRequest
getSecureForwardedHeaderTrustedPart() protectedGets first Forwarded header value for tokenRequest
getSecureForwardedHeaderTrustedParts() protectedGets only trusted Forwarded header partsRequest
getTrustedHeaders() protectedTrusted headers according to the $trustedHosts.Request
getUserIpFromIpHeader() protectedReturn user IP’s from IP header.Request
getUserIpFromIpHeaders() protectedReturns the user IP address from $ipHeaders.Request
loadCookies() protectedConverts $_COOKIE into an array of Cookie.Request
loadCsrfToken() protectedLoads the CSRF token from cookie or session.Request
resolvePathInfo() protectedResolves the path info part of the currently requested URL.Request
resolveRequestUri() protectedResolves the request URI portion for the currently requested URL.Request
ConstantValueDescriptionDefined by
CSRF_HEADER'X-CSRF-Token'Default name of the HTTP header for sending CSRF token.Request
public array $acceptableContentTypes

The content types ordered by the quality score.

Types with the highest scores will be returned first. The array keys are the content types, while the array values are the corresponding quality score and other parameters as given in the header.

public array $acceptableLanguages

The languages ordered by the preference level.

The first element represents the most preferred language.

public string $contentType

Request content-type.

Empty string is returned if this information is not available.

Access

Read-only (virtual property).

public string $cookieValidationKey = null

A secret key used for cookie validation.

This property must be set if $enableCookieValidation is true.

public array $csrfCookie = ['httpOnly' => true]

The configuration for creating the CSRF cookie.

This property is used only when both $enableCsrfValidation and $enableCsrfCookie are true.

public string $csrfHeader = self::CSRF_HEADER

The name of the HTTP header for sending CSRF token.

Defaults to CSRF_HEADER. This property may be changed for Yii API applications only. Don’t change this property for Yii Web application.

public string $csrfParam = '_csrf'

The name of the token used to prevent CSRF.

Defaults to ‘_csrf’. This property is used only when $enableCsrfValidation is true.

public null|string $csrfToken

The token used to perform CSRF validation.

Null is returned if the $validateCsrfHeaderOnly is true.

Access

Read-only (virtual property).

public string|null $csrfTokenFromHeader

The CSRF token sent via $csrfHeader by browser.

Null is returned if no such header is sent.

Access

Read-only (virtual property).

public bool $enableCookieValidation = true

Whether cookies should be validated to ensure they are not tampered.

Defaults to true.

public bool $enableCsrfCookie = true

Whether to use cookie to persist CSRF token.

If false, CSRF token will be stored in session under the name of $csrfParam. Note that while storing CSRF tokens in session increases security, it requires starting a session for every page, which will degrade your site performance.

public bool $enableCsrfValidation = true

Whether to enable CSRF (Cross-Site Request Forgery) validation.

Defaults to true. When CSRF validation is enabled, forms submitted to an Yii Web application must be originated from the same application. If not, a 400 HTTP exception will be raised.

Note, this feature requires that the user client accepts cookie. Also, to use this feature, forms submitted via POST method must contain a hidden input whose name is specified by $csrfParam. You may use Html::beginForm() to generate his hidden input.

In JavaScript, you may get the values of $csrfParam and $csrfToken via yii.getCsrfParam() and yii.getCsrfToken(), respectively. The YiiAsset asset must be registered. You also need to include CSRF meta tags in your pages by using Html::csrfMetaTags().

For SPA, you can use CSRF validation by custom header with a random or an empty value. Include a header with the name specified by $csrfHeader to requests that must be validated. Warning! CSRF validation by custom header can be used only for same-origin requests or with CORS configured to allow requests from the list of specific origins only.

public string[] $ipHeaders = ['X-Forwarded-For']

List of headers where proxies store the real client IP.

It’s not advisable to put insecure headers here. To use the Forwarded header according to RFC 7239, the header must be added to $secureHeaders list. The match of header names is case-insensitive.

Since

2.0.13

public string $method

Request method, such as GET, POST, HEAD, PUT, PATCH, DELETE.

The value returned is turned into upper case.

Access

Read-only (virtual property).

public string $methodParam = '_method'

The name of the POST parameter that is used to indicate if a request is a PUT, PATCH or DELETE request tunneled through POST.

Defaults to ‘_method’.

public array $parsers = []

The parsers for converting the raw HTTP request body into $bodyParams.

The array keys are the request Content-Types, and the array values are the corresponding configurations for creating the parser objects. A parser must implement the RequestParserInterface.

To enable parsing for JSON requests you can use the JsonParser class like in the following example:

[
'application/json' => 'yii\web\JsonParser',
]

To register a parser for parsing all request types you can use '*' as the array key. This one will be used as a fallback in case no other types match.

public string $pathInfo

Part of the request URL that is after the entry script and before the question mark.

Note, the returned path info is already URL-decoded.

public string[] $portHeaders = ['X-Forwarded-Port']

List of headers where proxies store the real request port.

It’s not advisable to put insecure headers here. To use the Forwarded Port, the header must be added to $secureHeaders list. The match of header names is case-insensitive.

Since

2.0.46

public array $secureHeaders = ['X-Forwarded-For', 'X-Forwarded-Host', 'X-Forwarded-Proto', 'X-Forwarded-Port', 'Front-End-Https', 'X-Rewrite-Url', 'X-Original-Host']

Lists of headers that are, by default, subject to the trusted host configuration.

These headers will be filtered unless explicitly allowed in $trustedHosts. If the list contains the Forwarded header, processing will be done according to RFC 7239. The match of header names is case-insensitive.

Since

2.0.13

public array $secureProtocolHeaders = ['X-Forwarded-Proto' => ['https'], 'Front-End-Https' => ['on']]

List of headers to check for determining whether the connection is made via HTTPS.

The array keys are header names and the array value is a list of header values that indicate a secure connection. The match of header names and values is case-insensitive. It’s not advisable to put insecure headers here.

Since

2.0.13

public array $trustedHosts = []

The configuration for trusted security related headers.

An array key is an IPv4 or IPv6 IP address in CIDR notation for matching a client.

An array value is a list of headers to trust. These will be matched against $secureHeaders to determine which headers are allowed to be sent by a specified host. The case of the header names must be the same as specified in $secureHeaders.

For example, to trust all headers listed in $secureHeaders for IP addresses in range 192.168.0.0-192.168.0.254 write the following:

[
'192.168.0.0/24',
]

To trust just the X-Forwarded-For header from 10.0.0.1, use:

[
'10.0.0.1' => ['X-Forwarded-For']
]

Default is to trust all headers except those listed in $secureHeaders from all hosts. Matches are tried in order and searching is stopped when IP matches.

Info: Matching is performed using IpValidator. See IpValidator::setRanges() and IpValidator::$networks for advanced matching.

Since

2.0.13

public string $url

The currently requested relative URL.

Note that the URI returned may be URL-encoded depending on the client.

public bool $validateCsrfHeaderOnly = false

Whether to use custom header only to CSRF validation of SPA.

Defaults to false. If false and $enableCsrfValidation is true, CSRF validation by token will used. Warning! CSRF validation by custom header can be used for Yii API applications only.

public function get(string|null $name = null, mixed $defaultValue = null): ($name is null ? array : mixed)

Returns GET parameter with a given name. If name isn’t specified, returns an array of all GET parameters.

Parameters

ParameterTypeDescription
$namestring|nullThe parameter name
$defaultValuemixedThe default parameter value if the parameter does not exist.

Returns

($name is null ? array : mixed)

public function getAbsoluteUrl(): string

Returns the currently requested absolute URL.

This is a shortcut to the concatenation of $hostInfo and $url.

Returns

string: The currently requested absolute URL.

public function getAcceptableContentTypes(): array

Returns the content types acceptable by the end user.

This is determined by the Accept HTTP header. For example,

$_SERVER['HTTP_ACCEPT'] = 'text/plain; q=0.5, application/json; version=1.0, application/xml; version=2.0;';
$types = $request->getAcceptableContentTypes();
print_r($types);
// displays:
// [
// 'application/json' => ['q' => 1, 'version' => '1.0'],
// 'application/xml' => ['q' => 1, 'version' => '2.0'],
// 'text/plain' => ['q' => 0.5],
// ]

Returns

array: The content types ordered by the quality score. Types with the highest scores will be returned first. The array keys are the content types, while the array values are the corresponding quality score and other parameters as given in the header.

public function getAcceptableLanguages(): array

Returns the languages acceptable by the end user.

This is determined by the Accept-Language HTTP header.

Returns

array: The languages ordered by the preference level. The first element represents the most preferred language.

public function getAuthCredentials(): array

Returns

array: That contains exactly two elements: - 0: the username sent via HTTP authentication, null if the username is not given - 1: the password sent via HTTP authentication, null if the password is not given

Since

2.0.13

See also

public function getAuthPassword(): string|null

Returns

string|null: The password sent via HTTP authentication, null if the password is not given

See also

public function getAuthUser(): string|null

Returns

string|null: The username sent via HTTP authentication, null if the username is not given

See also

public function getBaseUrl(): string

Returns the relative URL for the application.

This is similar to $scriptUrl except that it does not include the script file name, and the ending slashes are removed.

Returns

string: The relative URL for the application

See also

public function getBodyParam(string $name, mixed $defaultValue = null): mixed

Returns the named request body parameter value.

If the parameter does not exist, the second parameter passed to this method will be returned.

Parameters

ParameterTypeDescription
$namestringThe parameter name
$defaultValuemixedThe default parameter value if the parameter does not exist.

Returns

mixed: The parameter value

See also

public function getBodyParams(): mixed

Returns the request parameters given in the request body.

Request parameters are determined using the parsers configured in $parsers property. If no parsers are configured for the current $contentType it uses the PHP function mb_parse_str() to parse the request body.

Returns

mixed: The request parameters given in the request body.

Throws

See also

public function getContentType(): string

Returns request content-type The Content-Type header field indicates the MIME type of the data contained in getRawBody() or, in the case of the HEAD method, the media type that would have been sent had the request been a GET.

For the MIME-types the user expects in response, see $acceptableContentTypes.

Returns

string: Request content-type. Empty string is returned if this information is not available.

public function getCookies(): yii\web\CookieCollection

Returns the cookie collection.

Through the returned cookie collection, you may access a cookie using the following syntax:

$cookie = $request->cookies['name']
if ($cookie !== null) {
$value = $cookie->value;
}
// alternatively
$value = $request->cookies->getValue('name');

Returns

CookieCollection: The cookie collection.

public function getCsrfToken(bool $regenerate = false): null|string

Returns the token used to perform CSRF validation.

This token is generated in a way to prevent BREACH attacks. It may be passed along via a hidden field of an HTML form or an HTTP header value to support CSRF validation.

Parameters

ParameterTypeDescription
$regenerateboolWhether to regenerate CSRF token. When this parameter is true, each time this method is called, a new CSRF token will be generated and persisted (in session or cookie).

Returns

null|string: The token used to perform CSRF validation. Null is returned if the $validateCsrfHeaderOnly is true.

public function getCsrfTokenFromHeader(): string|null

Returns

string|null: The CSRF token sent via $csrfHeader by browser. Null is returned if no such header is sent.

public function getETags(): array

Gets the Etags.

Returns

array: The entity tags

public function getHeaders(): yii\web\HeaderCollection

Returns the header collection.

The header collection contains incoming HTTP headers.

Returns

HeaderCollection: The header collection

public function getHostInfo(): string|null

Returns the schema and host part of the current request URL.

The returned URL does not have an ending slash.

By default this value is based on the user request information. This method will return the value of $_SERVER['HTTP_HOST'] if it is available or $_SERVER['SERVER_NAME'] if not. You may want to check out the PHP documentation for more information on these variables.

You may explicitly specify it by setting the hostInfo property.

Warning: Dependent on the server configuration this information may not be reliable and may be faked by the user sending the HTTP request. If the webserver is configured to serve the same site independent of the value of the Host header, this value is not reliable. In such situations you should either fix your webserver configuration or explicitly set the value by setting the hostInfo property. If you don’t have access to the server configuration, you can setup HostControl filter at application level in order to protect against such kind of attack.

Returns

string|null: Schema and hostname part (with port number if needed) of the request URL (e.g. https://www.yiiframework.com), null if can’t be obtained from $_SERVER and wasn’t set.

See also

public function getHostName(): string|null

Returns the host part of the current request URL.

Value is calculated from current hostInfo property.

Warning: The content of this value may not be reliable, dependent on the server configuration. Please refer to getHostInfo() for more information.

Returns

string|null: Hostname part of the request URL (e.g. www.yiiframework.com)

Since

2.0.10

See also

public function getIsAjax(): bool

Returns whether this is an AJAX (XMLHttpRequest) request.

Note that in case of cross domain requests, browser doesn’t set the X-Requested-With header by default: https://stackoverflow.com/questions/8163703/cross-domain-ajax-doesnt-send-x-requested-with-header

In case you are using fetch(), pass header manually:

fetch(url, {
method: 'GET',
headers: {'X-Requested-With': 'XMLHttpRequest'}
})

Returns

bool: Whether this is an AJAX (XMLHttpRequest) request.

public function getIsDelete(): bool

Returns whether this is a DELETE request.

Returns

bool: Whether this is a DELETE request.

public function getIsFlash(): bool

Returns whether this is an Adobe Flash or Flex request.

Returns

bool: Whether this is an Adobe Flash or Adobe Flex request.

public function getIsGet(): bool

Returns whether this is a GET request.

Returns

bool: Whether this is a GET request.

public function getIsHead(): bool

Returns whether this is a HEAD request.

Returns

bool: Whether this is a HEAD request.

public function getIsOptions(): bool

Returns whether this is an OPTIONS request.

Returns

bool: Whether this is a OPTIONS request.

public function getIsPatch(): bool

Returns whether this is a PATCH request.

Returns

bool: Whether this is a PATCH request.

public function getIsPjax(): bool

Returns whether this is a PJAX request.

Returns

bool: Whether this is a PJAX request

public function getIsPost(): bool

Returns whether this is a POST request.

Returns

bool: Whether this is a POST request.

public function getIsPut(): bool

Returns whether this is a PUT request.

Returns

bool: Whether this is a PUT request.

public function getIsSecureConnection(): bool

Return if the request is sent via secure channel (https).

Returns

bool: If the request is sent via secure channel (https)

public function getMethod(): string

Returns the method of the current request (e.g. GET, POST, HEAD, PUT, PATCH, DELETE).

Returns

string: Request method, such as GET, POST, HEAD, PUT, PATCH, DELETE. The value returned is turned into upper case.

public function getOrigin(): string|null

Returns the URL origin of a CORS request.

The return value is taken from the Origin header sent by the browser.

Note that the origin request header indicates where a fetch originates from. It doesn’t include any path information, but only the server name. It is sent with a CORS requests, as well as with POST requests. It is similar to the referer header, but, unlike this header, it doesn’t disclose the whole path. Please refer to https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin for more information.

Returns

string|null: URL origin of a CORS request, null if not available.

Since

2.0.13

See also

public function getPathInfo(): string

Returns the path info of the currently requested URL.

A path info refers to the part that is after the entry script and before the question mark (query string). The starting and ending slashes are both removed.

Returns

string: Part of the request URL that is after the entry script and before the question mark. Note, the returned path info is already URL-decoded.

Throws

public function getPort(): int

Returns the port to use for insecure requests.

Defaults to 80, or the port specified by the server if the current request is insecure.

Returns

int: Port number for insecure requests.

See also

public function getPreferredLanguage(array $languages = []): string

Returns the user-preferred language that should be used by this application.

The language resolution is based on the user preferred languages and the languages supported by the application. The method will try to find the best match.

Parameters

ParameterTypeDescription
$languagesarrayA list of the languages supported by the application. If this is empty, the current application language will be returned without further processing.

Returns

string: The language that the application should use.

public function getQueryParam(string $name, mixed $defaultValue = null): mixed

Returns the named GET parameter value.

If the GET parameter does not exist, the second parameter passed to this method will be returned.

Parameters

ParameterTypeDescription
$namestringThe GET parameter name.
$defaultValuemixedThe default parameter value if the GET parameter does not exist.

Returns

mixed: The GET parameter value

See also

public function getQueryParams(): array

Returns the request parameters given in the $queryString.

This method will return the contents of $_GET if params where not explicitly set.

Returns

array: The request GET parameter values.

See also

public function getQueryString(): string

Returns part of the request URL that is after the question mark.

Returns

string: Part of the request URL that is after the question mark

public function getRawBody(): string

Returns the raw HTTP request body.

Returns

string: The request body

public function getReferrer(): string|null

Returns the URL referrer.

Returns

string|null: URL referrer, null if not available

public function getRemoteHost(): string|null

Returns the host name of the other end of this connection.

This is always the next hop, any headers are ignored.

Returns

string|null: Remote host name, null if not available

Since

2.0.13

See also

public function getRemoteIP(): string|null

Returns the IP on the other end of this connection.

This is always the next hop, any headers are ignored.

Returns

string|null: Remote IP address, null if not available.

Since

2.0.13

public function getScriptFile(): string

Returns the entry script file path.

The default implementation will simply return $_SERVER['SCRIPT_FILENAME'].

Returns

string: The entry script file path

Throws

public function getScriptUrl(): string

Returns the relative URL of the entry script.

The implementation of this method referenced Zend_Controller_Request_Http in Zend Framework.

Returns

string: The relative URL of the entry script.

Throws

public function getSecurePort(): int

Returns the port to use for secure requests.

Defaults to 443, or the port specified by the server if the current request is secure.

Returns

int: Port number for secure requests.

See also

public function getServerName(): string|null

Returns the server name.

Returns

string|null: Server name, null if not available

public function getServerPort(): int|null

Returns the server port number. If a port is specified via a forwarding header (e.g. ‘X-Forwarded-Port’) and the remote host is a “trusted host” the that port will be used (see $portHeaders), otherwise the default server port will be returned.

Returns

int|null: Server port number, null if not available

See also

public function getUrl(): string

Returns the currently requested relative URL.

This refers to the portion of the URL that is after the $hostInfo part. It includes the $queryString part if any.

Returns

string: The currently requested relative URL. Note that the URI returned may be URL-encoded depending on the client.

Throws

public function getUserAgent(): string|null

Returns the user agent.

Returns

string|null: User agent, null if not available

public function getUserHost(): string|null

Returns the user host name.

The HOST is determined using headers and / or $_SERVER variables.

Returns

string|null: User host name, null if not available

public function getUserIP(): string|null

Returns the user IP address.

The IP is determined using headers and / or $_SERVER variables.

Returns

string|null: User IP address, null if not available

public function parseAcceptHeader(string $header): array

Parses the given Accept (or Accept-Language) header.

This method will return the acceptable values with their quality scores and the corresponding parameters as specified in the given Accept header. The array keys of the return value are the acceptable values, while the array values consisting of the corresponding quality scores and parameters. The acceptable values with the highest quality scores will be returned first. For example,

$header = 'text/plain; q=0.5, application/json; version=1.0, application/xml; version=2.0;';
$accepts = $request->parseAcceptHeader($header);
print_r($accepts);
// displays:
// [
// 'application/json' => ['q' => 1, 'version' => '1.0'],
// 'application/xml' => ['q' => 1, 'version' => '2.0'],
// 'text/plain' => ['q' => 0.5],
// ]

Parameters

ParameterTypeDescription
$headerstringThe header to be parsed

Returns

array: The acceptable values ordered by their quality score. The values with the highest scores will be returned first.

public function post(string|null $name = null, mixed $defaultValue = null): mixed

Returns POST parameter with a given name. If name isn’t specified, returns an array of all POST parameters.

Parameters

ParameterTypeDescription
$namestring|nullThe parameter name
$defaultValuemixedThe default parameter value if the parameter does not exist.

Returns

mixed

public function resolve(): array

Resolves the current request into a route and the associated parameters.

Returns

array: The first element is the route, and the second is the associated parameters.

Throws

public function setAcceptableContentTypes(array $value): mixed

Sets the acceptable content types.

Please refer to getAcceptableContentTypes() on the format of the parameter.

Parameters

ParameterTypeDescription
$valuearrayThe content types that are acceptable by the end user. They should be ordered by the preference level.

Returns

mixed

See also

public function setAcceptableLanguages(array $value): mixed

Parameters

ParameterTypeDescription
$valuearrayThe languages that are acceptable by the end user. They should be ordered by the preference level.

Returns

mixed

public function setBaseUrl(string $value): mixed

Sets the relative URL for the application.

By default the URL is determined based on the entry script URL. This setter is provided in case you want to change this behavior.

Parameters

ParameterTypeDescription
$valuestringThe relative URL for the application

Returns

mixed

public function setBodyParams(mixed $values): mixed

Sets the request body parameters.

Parameters

ParameterTypeDescription
$valuesmixedThe request body parameters (name-value pairs)

Returns

mixed

See also

public function setHostInfo(string|null $value): mixed

Sets the schema and host part of the application URL.

This setter is provided in case the schema and hostname cannot be determined on certain Web servers.

Parameters

ParameterTypeDescription
$valuestring|nullThe schema and host part of the application URL. The trailing slashes will be removed.

Returns

mixed

See also

public function setPathInfo(string $value): mixed

Sets the path info of the current request.

This method is mainly provided for testing purpose.

Parameters

ParameterTypeDescription
$valuestringThe path info of the current request

Returns

mixed

public function setPort(int $value): mixed

Sets the port to use for insecure requests.

This setter is provided in case a custom port is necessary for certain server configurations.

Parameters

ParameterTypeDescription
$valueintPort number.

Returns

mixed

public function setQueryParams(array $values): mixed

Sets the request $queryString parameters.

Parameters

ParameterTypeDescription
$valuesarrayThe request query parameters (name-value pairs)

Returns

mixed

See also

public function setRawBody(string $rawBody): mixed

Sets the raw HTTP request body, this method is mainly used by test scripts to simulate raw HTTP requests.

Parameters

ParameterTypeDescription
$rawBodystringThe request body

Returns

mixed

public function setScriptFile(string $value): mixed

Sets the entry script file path.

The entry script file path normally can be obtained from $_SERVER['SCRIPT_FILENAME']. If your server configuration does not return the correct value, you may configure this property to make it right.

Parameters

ParameterTypeDescription
$valuestringThe entry script file path.

Returns

mixed

public function setScriptUrl(string $value): mixed

Sets the relative URL for the application entry script.

This setter is provided in case the entry script URL cannot be determined on certain Web servers.

Parameters

ParameterTypeDescription
$valuestringThe relative URL for the application entry script.

Returns

mixed

public function setSecurePort(int $value): mixed

Sets the port to use for secure requests.

This setter is provided in case a custom port is necessary for certain server configurations.

Parameters

ParameterTypeDescription
$valueintPort number.

Returns

mixed

public function setUrl(string $value): mixed

Sets the currently requested relative URL.

The URI must refer to the portion that is after $hostInfo. Note that the URI should be URL-encoded.

Parameters

ParameterTypeDescription
$valuestringThe request URI to be set

Returns

mixed

public function validateCsrfToken(string|null $clientSuppliedToken = null): bool

Performs the CSRF validation.

This method will validate the user-provided CSRF token by comparing it with the one stored in cookie or session. This method is mainly called in Controller::beforeAction().

Note that the method will NOT perform CSRF validation if $enableCsrfValidation is false or the HTTP method is among GET, HEAD or OPTIONS.

Parameters

ParameterTypeDescription
$clientSuppliedTokenstring|nullThe user-provided CSRF token to be validated. If null, the token will be retrieved from the $csrfParam POST field or HTTP header. This parameter is available since version 2.0.4.

Returns

bool: Whether CSRF token is valid. If $enableCsrfValidation is false, this method will return true.

protected function createCsrfCookie(string $token): yii\web\Cookie

Creates a cookie with a randomly generated CSRF token.

Initial values specified in $csrfCookie will be applied to the generated cookie.

Parameters

ParameterTypeDescription
$tokenstringThe CSRF token

Returns

Cookie: The generated cookie

See also

protected function filterHeaders(yii\web\HeaderCollection $headerCollection): mixed

Filters headers according to the $trustedHosts.

Parameters

ParameterTypeDescription
$headerCollectionHeaderCollection

Returns

mixed

Since

2.0.13

protected function generateCsrfToken(): string

Generates an unmasked random token used to perform CSRF validation.

Returns

string: The random token for CSRF validation.

protected function getIpValidator(): yii\validators\IpValidator

Creates instance of IpValidator.

You can override this method to adjust validator or implement different matching strategy.

Returns

yii\validators\IpValidator

Since

2.0.13

protected function getSecureForwardedHeaderParts(): array

Returns decoded forwarded header

Returns

array

Since

2.0.31

protected function getSecureForwardedHeaderTrustedPart(string $token): string|null

Gets first Forwarded header value for token

Parameters

ParameterTypeDescription
$tokenstringHeader token

Returns

string|null

Since

2.0.31

protected function getSecureForwardedHeaderTrustedParts(): array

Gets only trusted Forwarded header parts

Returns

array

Since

2.0.31

protected function getTrustedHeaders(): array

Trusted headers according to the $trustedHosts.

Returns

array

Since

2.0.28

protected function getUserIpFromIpHeader(string $ips): string|null

Return user IP’s from IP header.

Parameters

ParameterTypeDescription
$ipsstringComma separated IP list

Returns

string|null: IP as string. Null is returned if IP can not be determined from header.

Since

2.0.28

See also

protected function getUserIpFromIpHeaders(): string|null

Returns the user IP address from $ipHeaders.

Returns

string|null: User IP address, null if not available

Since

2.0.28

See also

protected function loadCookies(): array

Converts $_COOKIE into an array of Cookie.

Returns

array: The cookies obtained from request

Throws

protected function loadCsrfToken(): string|null

Loads the CSRF token from cookie or session.

Returns

string|null: The CSRF token loaded from cookie or session. Null is returned if the cookie or session does not have CSRF token.

protected function resolvePathInfo(): string

Resolves the path info part of the currently requested URL.

A path info refers to the part that is after the entry script and before the question mark (query string). The starting slashes are both removed (ending slashes will be kept).

Returns

string: Part of the request URL that is after the entry script and before the question mark. Note, the returned path info is decoded.

Throws

protected function resolveRequestUri(): string|bool

Resolves the request URI portion for the currently requested URL.

This refers to the portion that is after the $hostInfo part. It includes the $queryString part if any. The implementation of this method referenced Zend_Controller_Request_Http in Zend Framework.

Returns

string|bool: The request URI portion for the currently requested URL. Note that the URI returned may be URL-encoded depending on the client.

Throws