Respuesta (Response)

Nota

Para todas las funciones Http, Ubiquity utiliza clases técnicas que contienen métodos estáticos. Se trata de una elección de diseño para evitar la inyección de dependencias que degradaría el rendimiento.

La clase UResponse maneja sólo las cabeceras, no el cuerpo de la respuesta, que convencionalmente es proporcionado por el contenido mostrado por las llamadas utilizadas para dar salida a los datos (echo, print …).

La clase UResponse proporciona funcionalidad adicional para manipular más fácilmente las cabeceras de respuesta.

Añadir o modificar cabeceras

use Ubiquity\utils\http\UResponse;
$animal='camel';
UResponse::header('Animal',$animal);

Forzar cabecera múltiple del mismo tipo:

UResponse::header('Animal','monkey',false);

Fuerza el código de respuesta HTTP al valor especificado:

UResponse::header('Messages',$message,false,500);

Definición de cabeceras específicas

content-type

Establecer el tipo de contenido de la respuesta a application/json:

UResponse::asJSON();

Establecer el tipo de contenido de la respuesta a text/html:

UResponse::asHtml();

Establecer el tipo de contenido de la respuesta a plain/text:

UResponse::asText();

Establecer el tipo de contenido de la respuesta a application/xml:

UResponse::asXml();

Definición de una codificación específica (el valor por defecto es siempre utf-8):

UResponse::asHtml('iso-8859-1');

Cache

Forzar la desactivación de la caché del navegador:

UResponse::noCache();

Accept

Define qué tipos de contenido, expresados como tipos MIME, puede entender el cliente.
Ver Aceptar valores por defecto

UResponse::setAccept('text/html');

Cabeceras de respuesta CORS

Cross-Origin Resource Sharing (CORS) es un mecanismo que utiliza cabeceras HTTP adicionales para indicar a un navegador que permita a su aplicación web que se ejecuta en un origen (dominio) tener permiso para acceder a recursos seleccionados de un servidor en un origen diferente.

Access-Control-Allow-Origin

Ajuste de origen permitido:

UResponse::setAccessControlOrigin('http://myDomain/');

Access-Control-Allow-methods

Definición de métodos permitidos:

UResponse::setAccessControlMethods('GET, POST, PUT, DELETE, PATCH, OPTIONS');

Access-Control-Allow-headers

Definición de las cabeceras permitidas:

UResponse::setAccessControlHeaders('X-Requested-With, Content-Type, Accept, Origin, Authorization');

Activación global de CORS

habilitar CORS para un dominio con valores por defecto:

  • métodos permitidos: GET, POST, PUT, DELETE, PATCH, OPTIONS

  • cabeceras permitidas: X-Requested-With, Content-Type, Accept, Origin, Authorization

UResponse::enableCors('http://myDomain/');

Comprobación de las cabeceras de respuesta

Comprobación de si se han enviado las cabeceras:

if(!UResponse::isSent()){
     //do something if headers are not send
}

Comprobando si el tipo de contenido de la respuesta es application/json:

Importante

Este método sólo funciona si ha utilizado la clase UResponse para establecer las cabeceras.

if(UResponse::isJSON()){
     //do something if response is a JSON response
}