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
}