Respuesta HTTP

Nette encapsula la respuesta HTTP en objetos con una API comprensible.

La respuesta HTTP está representada por el objeto Nette\Http\Response. Si trabaja con Nette, este objeto es creado automáticamente por el framework y puede solicitar que se le pase mediante inyección de dependencias. En los presenters, basta con llamar al método $this->getHttpResponse().

Instalación y requisitos

Nette\Http\Response

El objeto, a diferencia de Nette\Http\Request, es mutable, es decir, puede cambiar el estado mediante setters, por ejemplo, enviar cabeceras. No olvide que todos los setters deben ser llamados antes de enviar cualquier salida. Si ya se ha enviado la salida lo indica el método isSent(). Si devuelve true, cualquier intento de enviar una cabecera lanzará una excepción Nette\InvalidStateException.

setCode (int $code, ?string $reason=null)

Cambia el código de estado de la respuesta. Para una mejor legibilidad del código fuente, se recomienda utilizar constantes predefinidas en lugar de números para el código.

$httpResponse->setCode(Nette\Http\Response::S404_NotFound);

getCode(): int

Devuelve el código de estado de la respuesta.

isSent(): bool

Devuelve si las cabeceras ya han sido enviadas desde el servidor al navegador, por lo que ya no es posible enviar cabeceras ni cambiar el código de estado.

setHeader (string $name, string $value)

Envía una cabecera HTTP y sobrescribe una cabecera enviada previamente con el mismo nombre.

$httpResponse->setHeader('Pragma', 'no-cache');

addHeader (string $name, string $value)

Envía una cabecera HTTP y no sobrescribe una cabecera enviada previamente con el mismo nombre.

$httpResponse->addHeader('Accept', 'application/json');
$httpResponse->addHeader('Accept', 'application/xml');

deleteHeader (string $name)

Elimina una cabecera HTTP enviada previamente.

getHeader (string $header): ?string

Devuelve la cabecera HTTP enviada o null si no existe. El parámetro es insensible a mayúsculas/minúsculas.

$pragma = $httpResponse->getHeader('Pragma');

getHeaders(): array

Devuelve todas las cabeceras HTTP enviadas como un array asociativo.

$headers = $httpResponse->getHeaders();
echo $headers['Pragma'];

setContentType (string $type, ?string $charset=null)

Cambia la cabecera Content-Type.

$httpResponse->setContentType('text/plain', 'UTF-8');

redirect (string $url, int $code=self::S302_Found)void

Redirige a otra URL. No olvide terminar el script después.

$httpResponse->redirect('http://example.com');
exit;

setExpiration (?string $time)

Establece la expiración del documento HTTP utilizando las cabeceras Cache-Control y Expires. El parámetro es un intervalo de tiempo (como texto) o null, lo que deshabilita el almacenamiento en caché.

// la caché del navegador expirará en una hora
$httpResponse->setExpiration('1 hour');

sendAsFile (string $fileName)

La respuesta se descargará mediante el cuadro de diálogo Guardar como con el nombre especificado. El archivo en sí no se envía.

$httpResponse->sendAsFile('factura.pdf');

setCookie (string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null)

Envía una cookie. Valores por defecto de los parámetros:

$path '/' la cookie tiene alcance a todas las rutas en el (sub)dominio (configurable)
$domain null lo que significa con alcance al (sub)dominio actual, pero no a sus subdominios (configurable)
$secure true si el sitio web se ejecuta en HTTPS, de lo contrario false (configurable)
$httpOnly true la cookie no es accesible para JavaScript
$sameSite 'Lax' la cookie puede no ser enviada al acceder desde otro dominio

Puede cambiar los valores predeterminados de los parámetros $path, $domain y $secure en la configuración.

El tiempo se puede especificar como un número de segundos o una cadena:

$httpResponse->setCookie('lang', 'es', '100 days');

El parámetro $domain determina qué dominios pueden aceptar la cookie. Si no se especifica, la cookie es aceptada por el mismo (sub)dominio que la estableció, pero no por sus subdominios. Si se especifica $domain, también se incluyen los subdominios. Por lo tanto, especificar $domain es menos restrictivo que omitirlo. Por ejemplo, con $domain = 'nette.org', las cookies también están disponibles en todos los subdominios como doc.nette.org.

Para el valor $sameSite, puede usar las constantes Response::SameSiteLax, SameSiteStrict y SameSiteNone.

deleteCookie (string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null)void

Elimina una cookie. Los valores por defecto de los parámetros son:

  • $path con alcance a todos los directorios ('/')
  • $domain con alcance al (sub)dominio actual, pero nikoliv sus subdominios
  • $secure se rige por la configuración en configuración
$httpResponse->deleteCookie('lang');
versión: 4.0