\Cake\HttpResponse

Responses contain the response text, status and headers of a HTTP response.

Summary

Methods
Properties
Constants
getProtocolVersion()
withProtocolVersion()
getHeaders()
hasHeader()
getHeader()
getHeaderLine()
withHeader()
withAddedHeader()
withoutHeader()
getBody()
withBody()
__construct()
send()
sendHeaders()
header()
location()
withLocation()
body()
statusCode()
getStatusCode()
withStatus()
getReasonPhrase()
httpCodes()
type()
setTypeMap()
getType()
withType()
getMimeType()
mapType()
charset()
getCharset()
withCharset()
disableCache()
withDisabledCache()
cache()
withCache()
sharable()
withSharable()
sharedMaxAge()
withSharedMaxAge()
maxAge()
withMaxAge()
mustRevalidate()
withMustRevalidate()
expires()
withExpires()
modified()
withModified()
notModified()
withNotModified()
vary()
withVary()
etag()
withEtag()
compress()
outputCompressed()
download()
withDownload()
protocol()
length()
withLength()
withAddedLink()
checkNotModified()
__toString()
cookie()
withCookie()
withExpiredCookie()
getCookie()
getCookies()
getCookieCollection()
cors()
file()
withFile()
withStringBody()
getFile()
stop()
__debugInfo()
No public properties found
No constants found
_createStream()
_setCookies()
_setContentType()
_setContent()
_sendHeader()
_sendContent()
getSimpleHeaders()
_setHeader()
_clearHeader()
_handleCallableBody()
_setStatus()
resolveType()
_setCacheControl()
_getUTCDate()
convertCookieToArray()
validateFile()
_fileRange()
_sendFile()
_isActive()
_clearBuffer()
_flushBuffer()
$headers
$headerNames
$_statusCodes
$_mimeTypes
$_protocol
$_status
$_contentType
$_file
$_fileRange
$_charset
$_cacheDirectives
$_cookies
$_reasonPhrase
$_streamMode
$_streamTarget
N/A
getStream()
setHeaders()
validateProtocolVersion()
filterHeaderValue()
assertHeader()
$protocol
$stream
N/A

Properties

$headers

$headers : array

List of all registered headers, as key => array of values.

Type

array

$headerNames

$headerNames : array

Map of normalized header name to original name used to register header.

Type

array

$_statusCodes

$_statusCodes : array

Holds HTTP response statuses

Type

array

$_mimeTypes

$_mimeTypes : array

Holds type key to mime type mappings for known mime types.

Type

array

$_protocol

$_protocol : string

Protocol header to send to the client

Type

string

$_status

$_status : integer

Status code to send to the client

Type

integer

$_contentType

$_contentType : string

Content type to send. This can be an 'extension' that will be transformed using the $_mimetypes array or a complete mime-type

Type

string

$_file

$_file : \Cake\Filesystem\File|null

File object for file to be read out as response

Type

\Cake\Filesystem\File|null

$_fileRange

$_fileRange : array

File range. Used for requesting ranges of files.

Type

array

$_charset

$_charset : string

The charset the response body is encoded with

Type

string

$_cacheDirectives

$_cacheDirectives : array

Holds all the cache directives that will be converted into headers when sending the request

Type

array

$_reasonPhrase

$_reasonPhrase : string

Reason Phrase

Type

string

$_streamMode

$_streamMode : string

Stream mode options.

Type

string

$_streamTarget

$_streamTarget : string|resource

Stream target or resource object.

Type

string|resource

$protocol

$protocol : string

Type

string

Methods

getProtocolVersion()

getProtocolVersion() : string

Retrieves the HTTP protocol version as a string.

The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").

Returns

string —

HTTP protocol version.

withProtocolVersion()

withProtocolVersion(string  $version) : static

Return an instance with the specified HTTP protocol version.

The version string MUST contain only the HTTP version number (e.g., "1.1", "1.0").

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new protocol version.

Parameters

string $version

HTTP protocol version

Returns

static

getHeaders()

getHeaders() : array

Retrieves all message headers.

The keys represent the header name as it will be sent over the wire, and each value is an array of strings associated with the header.

// Represent the headers as a string
foreach ($message->getHeaders() as $name => $values) {
    echo $name . ": " . implode(", ", $values);
}

// Emit headers iteratively:
foreach ($message->getHeaders() as $name => $values) {
    foreach ($values as $value) {
        header(sprintf('%s: %s', $name, $value), false);
    }
}

Returns

array —

Returns an associative array of the message's headers. Each key MUST be a header name, and each value MUST be an array of strings.

hasHeader()

hasHeader(string  $header) : boolean

Checks if a header exists by the given case-insensitive name.

Parameters

string $header

Case-insensitive header name.

Returns

boolean —

Returns true if any header names match the given header name using a case-insensitive string comparison. Returns false if no matching header name is found in the message.

getHeader()

getHeader(string  $header) : array<mixed,string>

Retrieves a message header value by the given case-insensitive name.

This method returns an array of all the header values of the given case-insensitive header name.

If the header does not appear in the message, this method MUST return an empty array.

Parameters

string $header

Case-insensitive header field name.

Returns

array<mixed,string> —

An array of string values as provided for the given header. If the header does not appear in the message, this method MUST return an empty array.

getHeaderLine()

getHeaderLine(string  $name) : string

Retrieves a comma-separated string of the values for a single header.

This method returns all of the header values of the given case-insensitive header name as a string concatenated together using a comma.

NOTE: Not all header values may be appropriately represented using comma concatenation. For such headers, use getHeader() instead and supply your own delimiter when concatenating.

If the header does not appear in the message, this method MUST return an empty string.

Parameters

string $name

Case-insensitive header field name.

Returns

string —

A string of values as provided for the given header concatenated together using a comma. If the header does not appear in the message, this method MUST return an empty string.

withHeader()

withHeader(string  $header, string|array<mixed,string>  $value) : static

Return an instance with the provided header, replacing any existing values of any headers with the same case-insensitive name.

While header names are case-insensitive, the casing of the header will be preserved by this function, and returned from getHeaders().

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new and/or updated header and value.

Parameters

string $header

Case-insensitive header field name.

string|array<mixed,string> $value

Header value(s).

Throws

\InvalidArgumentException

for invalid header names or values.

Returns

static

withAddedHeader()

withAddedHeader(string  $header, string|array<mixed,string>  $value) : static

Return an instance with the specified header appended with the given value.

Existing values for the specified header will be maintained. The new value(s) will be appended to the existing list. If the header did not exist previously, it will be added.

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new header and/or value.

Parameters

string $header

Case-insensitive header field name to add.

string|array<mixed,string> $value

Header value(s).

Throws

\InvalidArgumentException

for invalid header names or values.

Returns

static

withoutHeader()

withoutHeader(string  $header) : static

Return an instance without the specified header.

Header resolution MUST be done without case-sensitivity.

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that removes the named header.

Parameters

string $header

Case-insensitive header field name to remove.

Returns

static

withBody()

withBody(\Psr\Http\Message\StreamInterface  $body) : static

Return an instance with the specified message body.

The body MUST be a StreamInterface object.

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return a new instance that has the new body stream.

Parameters

\Psr\Http\Message\StreamInterface $body

Body.

Throws

\InvalidArgumentException

When the body is not valid.

Returns

static

__construct()

__construct(array  $options = array()) 

Constructor

Parameters

array $options

list of parameters to setup the response. Possible values are:

  • body: the response text that should be sent to the client
  • statusCodes: additional allowable response codes
  • status: the HTTP status code to respond with
  • type: a complete mime-type string or an extension mapped in this class
  • charset: the charset for the response body

send()

send() : void

Sends the complete response to the client including headers and message body.

Will echo out the content in the response body.

sendHeaders()

sendHeaders() : void

Sends the HTTP headers and cookies.

header()

header(string|array|null  $header = null, string|array|null  $value = null) : array

Buffers a header string to be sent Returns the complete list of buffered headers

Single header

header('Location', 'http://example.com');

Multiple headers

header(['Location' => 'http://example.com', 'X-Extra' => 'My header']);

String header

header('WWW-Authenticate: Negotiate');

Array of string headers

header(['WWW-Authenticate: Negotiate', 'Content-type: application/pdf']);

Multiple calls for setting the same header name will have the same effect as setting the header once with the last value sent for it

header('WWW-Authenticate: Negotiate');
header('WWW-Authenticate: Not-Negotiate');

will have the same effect as only doing

header('WWW-Authenticate: Not-Negotiate');

Parameters

string|array|null $header

An array of header strings or a single header string

  • an associative array of "header name" => "header value" is also accepted
  • an array of string headers is also accepted
string|array|null $value

The header value(s)

Returns

array —

List of headers to be sent

location()

location(null|string  $url = null) : string|null

Accessor for the location header.

Get/Set the Location header value.

Parameters

null|string $url

Either null to get the current location, or a string to set one.

Returns

string|null —

When setting the location null will be returned. When reading the location a string of the current location header value (if any) will be returned.

withLocation()

withLocation(string  $url) : static

Return an instance with an updated location header.

If the current status code is 200, it will be replaced with 302.

Parameters

string $url

The location to redirect to.

Returns

static —

A new response with the Location header set.

body()

body(string|callable|null  $content = null) : string|null

Buffers the response message to be sent if $content is null the current buffer is returned

Parameters

string|callable|null $content

the string or callable message to be sent

Returns

string|null —

Current message buffer if $content param is passed as null

statusCode()

statusCode(integer|null  $code = null) : integer

Sets the HTTP status code to be sent if $code is null the current code is returned

If the status code is 304 or 204, the existing Content-Type header will be cleared, as these response codes have no body.

Parameters

integer|null $code

the HTTP status code

Throws

\InvalidArgumentException

When an unknown status code is reached.

Returns

integer —

Current status code

getStatusCode()

getStatusCode() : integer

Gets the response status code.

The status code is a 3-digit integer result code of the server's attempt to understand and satisfy the request.

Returns

integer —

Status code.

withStatus()

withStatus(integer  $code, string  $reasonPhrase = '') : static

Return an instance with the specified status code and, optionally, reason phrase.

If no reason phrase is specified, implementations MAY choose to default to the RFC 7231 or IANA recommended reason phrase for the response's status code.

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the updated status and reason phrase.

If the status code is 304 or 204, the existing Content-Type header will be cleared, as these response codes have no body.

Parameters

integer $code

The 3-digit integer result code to set.

string $reasonPhrase

The reason phrase to use with the provided status code; if none is provided, implementations MAY use the defaults as suggested in the HTTP specification.

Throws

\InvalidArgumentException

For invalid status code arguments.

Returns

static

getReasonPhrase()

getReasonPhrase() : string

Gets the response reason phrase associated with the status code.

Because a reason phrase is not a required element in a response status line, the reason phrase value MAY be null. Implementations MAY choose to return the default RFC 7231 recommended reason phrase (or those listed in the IANA HTTP Status Code Registry) for the response's status code.

Returns

string —

Reason phrase; must return an empty string if none present.

httpCodes()

httpCodes(integer|array|null  $code = null) : mixed

Queries & sets valid HTTP response codes & messages.

Parameters

integer|array|null $code

If $code is an integer, then the corresponding code/message is returned if it exists, null if it does not exist. If $code is an array, then the keys are used as codes and the values as messages to add to the default HTTP codes. The codes must be integers greater than 99 and less than 1000. Keep in mind that the HTTP specification outlines that status codes begin with a digit between 1 and 5, which defines the class of response the client is to expect. Example:

   httpCodes(404); // returns [404 => 'Not Found']

   httpCodes([
       381 => 'Unicorn Moved',
       555 => 'Unexpected Minotaur'
   ]); // sets these new values, and returns true

   httpCodes([
       0 => 'Nothing Here',
       -1 => 'Reverse Infinity',
       12345 => 'Universal Password',
       'Hello' => 'World'
   ]); // throws an exception due to invalid codes

   For more on HTTP status codes see: http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1

Throws

\InvalidArgumentException

If an attempt is made to add an invalid status code

Returns

mixed —

Associative array of the HTTP codes as keys, and the message strings as values, or null of the given $code does not exist.

type()

type(string|null  $contentType = null) : mixed

Sets the response content type. It can be either a file extension which will be mapped internally to a mime-type or a string representing a mime-type if $contentType is null the current content type is returned if $contentType is an associative array, content type definitions will be stored/replaced

Setting the content type

type('jpg');

If you attempt to set the type on a 304 or 204 status code response, the content type will not take effect as these status codes do not have content-types.

Returning the current content type

type();

Storing content type definitions

type(['keynote' => 'application/keynote', 'bat' => 'application/bat']);

Replacing a content type definition

type(['jpg' => 'text/plain']);

Parameters

string|null $contentType

Content type key.

Returns

mixed —

Current content type or false if supplied an invalid content type.

setTypeMap()

setTypeMap(string  $type, string|array  $mimeType) : void

Sets a content type definition into the map.

E.g.: setTypeMap('xhtml', ['application/xhtml+xml', 'application/xhtml'])

This is needed for RequestHandlerComponent and recognition of types.

Parameters

string $type

Content type.

string|array $mimeType

Definition of the mime type.

getType()

getType() : string

Returns the current content type.

Returns

string

withType()

withType(string  $contentType) : static

Get an updated response with the content type set.

If you attempt to set the type on a 304 or 204 status code response, the content type will not take effect as these status codes do not have content-types.

Parameters

string $contentType

Either a file extension which will be mapped to a mime-type or a concrete mime-type.

Returns

static

getMimeType()

getMimeType(string  $alias) : mixed

Returns the mime type definition for an alias

e.g getMimeType('pdf'); // returns 'application/pdf'

Parameters

string $alias

the content type alias to map

Returns

mixed —

String mapped mime type or false if $alias is not mapped

mapType()

mapType(string|array  $ctype) : string|array|null

Maps a content-type back to an alias

e.g mapType('application/pdf'); // returns 'pdf'

Parameters

string|array $ctype

Either a string content type to map, or an array of types.

Returns

string|array|null —

Aliases for the types provided.

charset()

charset(string|null  $charset = null) : string

Sets the response charset if $charset is null the current charset is returned

Parameters

string|null $charset

Character set string.

Returns

string —

Current charset

getCharset()

getCharset() : string

Returns the current charset.

Returns

string

withCharset()

withCharset(string  $charset) : static

Get a new instance with an updated charset.

Parameters

string $charset

Character set string.

Returns

static

disableCache()

disableCache() : void

Sets the correct headers to instruct the client to not cache the response

withDisabledCache()

withDisabledCache() : static

Create a new instance with headers to instruct the client to not cache the response

Returns

static

cache()

cache(string  $since, string  $time = '+1 day') : void

Sets the correct headers to instruct the client to cache the response.

Parameters

string $since

a valid time since the response text has not been modified

string $time

a valid time for cache expiry

withCache()

withCache(string  $since, string  $time = '+1 day') : static

Create a new instance with the headers to enable client caching.

Parameters

string $since

a valid time since the response text has not been modified

string $time

a valid time for cache expiry

Returns

static

sharable()

sharable(boolean|null  $public = null, integer|null  $time = null) : boolean|null

Sets whether a response is eligible to be cached by intermediate proxies This method controls the `public` or `private` directive in the Cache-Control header

Parameters

boolean|null $public

If set to true, the Cache-Control header will be set as public if set to false, the response will be set to private if no value is provided, it will return whether the response is sharable or not

integer|null $time

time in seconds after which the response should no longer be considered fresh

Returns

boolean|null

withSharable()

withSharable(boolean  $public, integer|null  $time = null) : static

Create a new instace with the public/private Cache-Control directive set.

Parameters

boolean $public

If set to true, the Cache-Control header will be set as public if set to false, the response will be set to private.

integer|null $time

time in seconds after which the response should no longer be considered fresh.

Returns

static

sharedMaxAge()

sharedMaxAge(integer|null  $seconds = null) : integer|null

Sets the Cache-Control s-maxage directive.

The max-age is the number of seconds after which the response should no longer be considered a good candidate to be fetched from a shared cache (like in a proxy server). If called with no parameters, this function will return the current max-age value if any

Parameters

integer|null $seconds

if null, the method will return the current s-maxage value

Returns

integer|null

withSharedMaxAge()

withSharedMaxAge(integer  $seconds) : static

Create a new instance with the Cache-Control s-maxage directive.

The max-age is the number of seconds after which the response should no longer be considered a good candidate to be fetched from a shared cache (like in a proxy server).

Parameters

integer $seconds

The number of seconds for shared max-age

Returns

static

maxAge()

maxAge(integer|null  $seconds = null) : integer|null

Sets the Cache-Control max-age directive.

The max-age is the number of seconds after which the response should no longer be considered a good candidate to be fetched from the local (client) cache. If called with no parameters, this function will return the current max-age value if any

Parameters

integer|null $seconds

if null, the method will return the current max-age value

Returns

integer|null

withMaxAge()

withMaxAge(integer  $seconds) : static

Create an instance with Cache-Control max-age directive set.

The max-age is the number of seconds after which the response should no longer be considered a good candidate to be fetched from the local (client) cache.

Parameters

integer $seconds

The seconds a cached response can be considered valid

Returns

static

mustRevalidate()

mustRevalidate(boolean|null  $enable = null) : boolean

Sets the Cache-Control must-revalidate directive.

must-revalidate indicates that the response should not be served stale by a cache under any circumstance without first revalidating with the origin. If called with no parameters, this function will return whether must-revalidate is present.

Parameters

boolean|null $enable

if null, the method will return the current must-revalidate value. If boolean sets or unsets the directive.

Returns

boolean

withMustRevalidate()

withMustRevalidate(boolean  $enable) : static

Create an instance with Cache-Control must-revalidate directive set.

Sets the Cache-Control must-revalidate directive. must-revalidate indicates that the response should not be served stale by a cache under any circumstance without first revalidating with the origin.

Parameters

boolean $enable

If boolean sets or unsets the directive.

Returns

static

expires()

expires(string|\DateTime|null  $time = null) : string|null

Sets the Expires header for the response by taking an expiration time If called with no parameters it will return the current Expires value

Examples:

$response->expires('now') Will Expire the response cache now $response->expires(new DateTime('+1 day')) Will set the expiration in next 24 hours $response->expires() Will return the current expiration header value

Parameters

string|\DateTime|null $time

Valid time string or \DateTime instance.

Returns

string|null

withExpires()

withExpires(string|\DateTime  $time) : static

Create a new instance with the Expires header set.

Examples:

// Will Expire the response cache now
$response->withExpires('now')

// Will set the expiration in next 24 hours
$response->withExpires(new DateTime('+1 day'))

Parameters

string|\DateTime $time

Valid time string or \DateTime instance.

Returns

static

modified()

modified(string|\DateTime|null  $time = null) : string|null

Sets the Last-Modified header for the response by taking a modification time If called with no parameters it will return the current Last-Modified value

Examples:

$response->modified('now') Will set the Last-Modified to the current time $response->modified(new DateTime('+1 day')) Will set the modification date in the past 24 hours $response->modified() Will return the current Last-Modified header value

Parameters

string|\DateTime|null $time

Valid time string or \DateTime instance.

Returns

string|null

withModified()

withModified(string|\DateTime  $time) : static

Create a new instance with the Last-Modified header set.

Examples:

// Will Expire the response cache now
$response->withModified('now')

// Will set the expiration in next 24 hours
$response->withModified(new DateTime('+1 day'))

Parameters

string|\DateTime $time

Valid time string or \DateTime instance.

Returns

static

notModified()

notModified() : void

Sets the response as Not Modified by removing any body contents setting the status code to "304 Not Modified" and removing all conflicting headers

Warning This method mutates the response in-place and should be avoided.

withNotModified()

withNotModified() : static

Create a new instance as 'not modified'

This will remove any body contents set the status code to "304" and removing headers that describe a response body.

Returns

static

vary()

vary(string|array|null  $cacheVariances = null) : array|null

Sets the Vary header for the response, if an array is passed, values will be imploded into a comma separated string. If no parameters are passed, then an array with the current Vary header value is returned

Parameters

string|array|null $cacheVariances

A single Vary string or an array containing the list for variances.

Returns

array|null

withVary()

withVary(string|array  $cacheVariances) : static

Create a new instance with the Vary header set.

If an array is passed values will be imploded into a comma separated string. If no parameters are passed, then an array with the current Vary header value is returned

Parameters

string|array $cacheVariances

A single Vary string or an array containing the list for variances.

Returns

static

etag()

etag(string|null  $hash = null, boolean  $weak = false) : string|null

Sets the response Etag, Etags are a strong indicative that a response can be cached by a HTTP client. A bad way of generating Etags is creating a hash of the response output, instead generate a unique hash of the unique components that identifies a request, such as a modification time, a resource Id, and anything else you consider it makes it unique.

Second parameter is used to instruct clients that the content has changed, but semantically, it can be used as the same thing. Think for instance of a page with a hit counter, two different page views are equivalent, but they differ by a few bytes. This leaves off to the Client the decision of using or not the cached page.

If no parameters are passed, current Etag header is returned.

Parameters

string|null $hash

The unique hash that identifies this response

boolean $weak

Whether the response is semantically the same as other with the same hash or not

Returns

string|null

withEtag()

withEtag(string  $hash, boolean  $weak = false) : static

Create a new instance with the Etag header set.

Etags are a strong indicative that a response can be cached by a HTTP client. A bad way of generating Etags is creating a hash of the response output, instead generate a unique hash of the unique components that identifies a request, such as a modification time, a resource Id, and anything else you consider it that makes the response unique.

The second parameter is used to inform clients that the content has changed, but semantically it is equivalent to existing cached values. Consider a page with a hit counter, two different page views are equivalent, but they differ by a few bytes. This permits the Client to decide whether they should use the cached data.

Parameters

string $hash

The unique hash that identifies this response

boolean $weak

Whether the response is semantically the same as other with the same hash or not. Defaults to false

Returns

static

compress()

compress() : boolean

Sets the correct output buffering handler to send a compressed response. Responses will be compressed with zlib, if the extension is available.

Returns

boolean —

false if client does not accept compressed responses or no handler is available, true otherwise

outputCompressed()

outputCompressed() : boolean

Returns whether the resulting output will be compressed by PHP

Returns

boolean

download()

download(string  $filename) : void

Sets the correct headers to instruct the browser to download the response as a file.

Parameters

string $filename

The name of the file as the browser will download the response

withDownload()

withDownload(string  $filename) : static

Create a new instance with the Content-Disposition header set.

Parameters

string $filename

The name of the file as the browser will download the response

Returns

static

protocol()

protocol(string|null  $protocol = null) : string

Sets the protocol to be used when sending the response. Defaults to HTTP/1.1 If called with no arguments, it will return the current configured protocol

Parameters

string|null $protocol

Protocol to be used for sending response.

Returns

string —

Protocol currently set

length()

length(integer|null  $bytes = null) : string|null

Sets the Content-Length header for the response If called with no arguments returns the last Content-Length set

Parameters

integer|null $bytes

Number of bytes

Returns

string|null

withLength()

withLength(integer|string  $bytes) : static

Create a new response with the Content-Length header set.

Parameters

integer|string $bytes

Number of bytes

Returns

static

withAddedLink()

withAddedLink(string  $url, array  $options = array()) : static

Create a new response with the Link header set.

Examples

$response = $response->withAddedLink('http://example.com?page=1', ['rel' => 'prev'])
    ->withAddedLink('http://example.com?page=3', ['rel' => 'next']);

Will generate:

Link: <http://example.com?page=1>; rel="prev"
Link: <http://example.com?page=3>; rel="next"

Parameters

string $url

The LinkHeader url.

array $options

The LinkHeader params.

Returns

static

checkNotModified()

checkNotModified(\Cake\Http\ServerRequest  $request) : boolean

Checks whether a response has not been modified according to the 'If-None-Match' (Etags) and 'If-Modified-Since' (last modification date) request headers. If the response is detected to be not modified, it is marked as so accordingly so the client can be informed of that.

In order to mark a response as not modified, you need to set at least the Last-Modified etag response header before calling this method. Otherwise a comparison will not be possible.

Warning This method mutates the response in-place and should be avoided.

Parameters

\Cake\Http\ServerRequest $request

Request object

Returns

boolean —

Whether the response was marked as not modified or not.

__toString()

__toString() : string

String conversion. Fetches the response body as a string.

Does not send headers. If body is a callable, a blank string is returned.

Returns

string

cookie()

cookie(array|null  $options = null) : mixed

Getter/Setter for cookie configs

This method acts as a setter/getter depending on the type of the argument. If the method is called with no arguments, it returns all configurations.

If the method is called with a string as argument, it returns either the given configuration if it is set, or null, if it's not set.

If the method is called with an array as argument, it will set the cookie configuration to the cookie container.

Options (when setting a configuration)

  • name: The Cookie name
  • value: Value of the cookie
  • expire: Time the cookie expires in
  • path: Path the cookie applies to
  • domain: Domain the cookie is for.
  • secure: Is the cookie https?
  • httpOnly: Is the cookie available in the client?

Examples

Getting all cookies

$this->cookie()

Getting a certain cookie configuration

$this->cookie('MyCookie')

Setting a cookie configuration

$this->cookie((array) $options)

Parameters

array|null $options

Either null to get all cookies, string for a specific cookie or array to set cookie.

Returns

mixed

withCookie()

withCookie(string|\Cake\Http\Cookie\Cookie  $name, array|string  $data = '') : static

Create a new response with a cookie set.

Data

  • value: Value of the cookie
  • expire: Time the cookie expires in
  • path: Path the cookie applies to
  • domain: Domain the cookie is for.
  • secure: Is the cookie https?
  • httpOnly: Is the cookie available in the client?

Examples

// set scalar value with defaults
$response = $response->withCookie('remember_me', 1);

// customize cookie attributes
$response = $response->withCookie('remember_me', ['path' => '/login']);

// add a cookie object
$response = $response->withCookie(new Cookie('remember_me', 1));

Parameters

string|\Cake\Http\Cookie\Cookie $name

The name of the cookie to set, or a cookie object

array|string $data

Either a string value, or an array of cookie options.

Returns

static

withExpiredCookie()

withExpiredCookie(string|\Cake\Http\Cookie\CookieInterface  $name, array  $options = array()) : static

Create a new response with an expired cookie set.

Options

  • path: Path the cookie applies to
  • domain: Domain the cookie is for.
  • secure: Is the cookie https?
  • httpOnly: Is the cookie available in the client?

Examples

// set scalar value with defaults
$response = $response->withExpiredCookie('remember_me');

// customize cookie attributes
$response = $response->withExpiredCookie('remember_me', ['path' => '/login']);

// add a cookie object
$response = $response->withExpiredCookie(new Cookie('remember_me'));

Parameters

string|\Cake\Http\Cookie\CookieInterface $name

The name of the cookie to expire, or a cookie object

array $options

An array of cookie options.

Returns

static

getCookie()

getCookie(string  $name) : array|null

Read a single cookie from the response.

This method provides read access to pending cookies. It will not read the Set-Cookie header if set.

Parameters

string $name

The cookie name you want to read.

Returns

array|null —

Either the cookie data or null

getCookies()

getCookies() : array

Get all cookies in the response.

Returns an associative array of cookie name => cookie data.

Returns

array

cors()

cors(\Cake\Http\ServerRequest  $request, string|array  $allowedDomains = array(), string|array  $allowedMethods = array(), string|array  $allowedHeaders = array()) : \Cake\Http\CorsBuilder

Setup access for origin and methods on cross origin requests

This method allow multiple ways to setup the domains, see the examples

Full URI

cors($request, 'https://www.cakephp.org');

URI with wildcard

cors($request, 'https://*.cakephp.org');

Ignoring the requested protocol

cors($request, 'www.cakephp.org');

Any URI

cors($request, '*');

Whitelist of URIs

cors($request, ['http://www.cakephp.org', '*.google.com', 'https://myproject.github.io']);

Note The $allowedDomains, $allowedMethods, $allowedHeaders parameters are deprecated. Instead the builder object should be used.

Parameters

\Cake\Http\ServerRequest $request

Request object

string|array $allowedDomains

List of allowed domains, see method description for more details

string|array $allowedMethods

List of HTTP verbs allowed

string|array $allowedHeaders

List of HTTP headers allowed

Returns

\Cake\Http\CorsBuilder

A builder object the provides a fluent interface for defining additional CORS headers.

file()

file(string  $path, array  $options = array()) : void

Setup for display or download the given file.

If $_SERVER['HTTP_RANGE'] is set a slice of the file will be returned instead of the entire file.

Options keys

  • name: Alternate download name
  • download: If true sets download header and forces file to be downloaded rather than displayed in browser

Parameters

string $path

Path to file. If the path is not an absolute path that resolves to a file, APP will be prepended to the path (this behavior is deprecated).

array $options

Options See above.

Throws

\Cake\Http\Exception\NotFoundException

withFile()

withFile(string  $path, array  $options = array()) : static

Create a new instance that is based on a file.

This method will augment both the body and a number of related headers.

If $_SERVER['HTTP_RANGE'] is set, a slice of the file will be returned instead of the entire file.

Options keys

  • name: Alternate download name
  • download: If true sets download header and forces file to be downloaded rather than displayed inline.

Parameters

string $path

Path to file. If the path is not an absolute path that resolves to a file, APP will be prepended to the path (this behavior is deprecated).

array $options

Options See above.

Throws

\Cake\Http\Exception\NotFoundException

Returns

static

withStringBody()

withStringBody(string  $string) : static

Convenience method to set a string into the response body

Parameters

string $string

The string to be sent

Returns

static

getFile()

getFile() : \Cake\Filesystem\File|null

Get the current file if one exists.

Returns

\Cake\Filesystem\File|null —

The file to use in the response or null

stop()

stop(integer|string  $status) : void

Stop execution of the current script. Wraps exit() making testing easier.

Parameters

integer|string $status

See https://secure.php.net/exit for values

__debugInfo()

__debugInfo() : array

Returns an array that can be used to describe the internal state of this object.

Returns

array

_createStream()

_createStream() : void

Creates the stream object.

_setCookies()

_setCookies() : void

Sets the cookies that have been added via Cake\Http\Response::cookie() before any other output is sent to the client. Will set the cookies in the order they have been set.

_setContentType()

_setContentType() : void

Formats the Content-Type header based on the configured contentType and charset the charset will only be set in the header if the response is of type text/*

_setContent()

_setContent() : void

Sets the response body to an empty text if the status code is 204 or 304

_sendHeader()

_sendHeader(string  $name, string|null  $value = null) : void

Sends a header to the client.

Parameters

string $name

the header name

string|null $value

the header value

_sendContent()

_sendContent(string|callable  $content) : void

Sends a content string to the client.

If the content is a callable, it is invoked. The callable should either return a string or output content directly and have no return value.

Parameters

string|callable $content

String to send as response body or callable which returns/outputs content.

getSimpleHeaders()

getSimpleHeaders() : array

Backwards compatibility helper for getting flattened headers.

Previously CakePHP would store headers as a simple dictionary, now that we're supporting PSR7, the internal storage has each header as an array.

Returns

array

_setHeader()

_setHeader(string  $header, string  $value) : void

Sets a header.

Parameters

string $header

Header key.

string $value

Header value.

_clearHeader()

_clearHeader(string  $header) : void

Clear header

Parameters

string $header

Header key.

_handleCallableBody()

_handleCallableBody(callable  $content) : string

Handles the callable body for backward compatibility reasons.

Parameters

callable $content

Callable content.

Returns

string

_setStatus()

_setStatus(integer  $code, string  $reasonPhrase = '') : void

Modifier for response status

Parameters

integer $code

The code to set.

string $reasonPhrase

The response reason phrase.

Throws

\InvalidArgumentException

For invalid status code arguments.

resolveType()

resolveType(string  $contentType) : string

Translate and validate content-types.

Parameters

string $contentType

The content-type or type alias.

Throws

\InvalidArgumentException

When an invalid content-type or alias is used.

Returns

string —

The resolved content-type

_setCacheControl()

_setCacheControl() : void

Helper method to generate a valid Cache-Control header from the options set in other methods

_getUTCDate()

_getUTCDate(string|integer|\DateTime|null  $time = null) : \DateTime

Returns a DateTime object initialized at the $time param and using UTC as timezone

Parameters

string|integer|\DateTime|null $time

Valid time string or \DateTime instance.

Returns

\DateTime

convertCookieToArray()

convertCookieToArray(\Cake\Http\Cookie\CookieInterface  $cookie) : array

Convert the cookie into an array of its properties.

This method is compatible with the historical behavior of Cake\Http\Response, where httponly is httpOnly and expires is expire

Parameters

\Cake\Http\Cookie\CookieInterface $cookie

Cookie object.

Returns

array

validateFile()

validateFile(string  $path) : \Cake\Filesystem\File

Validate a file path is a valid response body.

Parameters

string $path

The path to the file.

Throws

\Cake\Http\Exception\NotFoundException

Returns

\Cake\Filesystem\File

_fileRange()

_fileRange(\Cake\Filesystem\File  $file, string  $httpRange) : void

Apply a file range to a file and set the end offset.

If an invalid range is requested a 416 Status code will be used in the response.

Parameters

\Cake\Filesystem\File $file

The file to set a range on.

string $httpRange

The range to use.

_sendFile()

_sendFile(\Cake\Filesystem\File  $file, array  $range) : boolean

Reads out a file, and echos the content to the client.

Parameters

\Cake\Filesystem\File $file

File object

array $range

The range to read out of the file.

Returns

boolean —

True is whole file is echoed successfully or false if client connection is lost in between

_isActive()

_isActive() : boolean

Returns true if connection is still active

Returns

boolean

_clearBuffer()

_clearBuffer() : boolean

Clears the contents of the topmost output buffer and discards them

Returns

boolean

_flushBuffer()

_flushBuffer() : void

Flushes the contents of the output buffer

getStream()

getStream(  $stream,   $modeIfNotInstance) 

Parameters

$stream
$modeIfNotInstance

setHeaders()

setHeaders(array  $originalHeaders) 

Filter a set of headers to ensure they are in the correct internal format.

Used by message constructors to allow setting all initial headers at once.

Parameters

array $originalHeaders

Headers to filter.

validateProtocolVersion()

validateProtocolVersion(string  $version) 

Validate the HTTP protocol version

Parameters

string $version

Throws

\InvalidArgumentException

on invalid HTTP protocol version

filterHeaderValue()

filterHeaderValue(mixed  $values) : array<mixed,string>

Parameters

mixed $values

Returns

array<mixed,string>

assertHeader()

assertHeader(string  $name) 

Ensure header name and values are valid.

Parameters

string $name

Throws

\InvalidArgumentException