Réponse
Note
Pour toutes les fonctionnalités Http, Ubiquity utilise des classes techniques contenant des méthodes statiques. C’est un choix de conception pour éviter l’injection de dépendances qui dégraderait les performances.
La classe UResponse ne gère que les en-têtes, pas le corps de la réponse, qui est conventionnellement fourni par le contenu affiché par les appels utilisés pour écrire des données (echo, print…).
La classe UResponse offre des fonctionnalités supplémentaires permettant de manipuler plus facilement les en-têtes de réponse.
Ajout ou modification d’en-têtes
use Ubiquity\utils\http\UResponse;
$animal='camel';
UResponse::header('Animal',$animal);
Forcer plusieurs en-têtes du même type :
UResponse::header('Animal','monkey',false);
Force le code de réponse HTTP à la valeur spécifiée :
UResponse::header('Messages',$message,false,500);
Définition d’en-têtes spécifiques
content-type
Définir le type de contenu de la réponse à application/json :
UResponse::asJSON();
Définir le type de contenu de la réponse à text/html :
UResponse::asHtml();
Définir le type de contenu de la réponse à plain/text :
UResponse::asText();
Définir le type de contenu de la réponse à application/xml :
UResponse::asXml();
Définition d’un encodage spécifique (la valeur par défaut est toujours utf-8) :
UResponse::asHtml('iso-8859-1');
Cache
Forcer la désactivation du cache du navigateur :
UResponse::noCache();
Accept
Définit les types de contenu, exprimés sous forme de types MIME, que le client est en mesure de comprendre.
Voir Acceptation des valeurs par défaut.
UResponse::setAccept('text/html');
En-têtes de réponse CORS
Cross-Origin Resource Sharing (CORS) est un mécanisme qui utilise des en-têtes HTTP supplémentaires pour indiquer au navigateur que votre application Web exécutée à une origine (domaine) a la permission d’accéder à des ressources sélectionnées sur un serveur à une origine différente.
Access-Control-Allow-Origin
Réglage de l’origine autorisée :
UResponse::setAccessControlOrigin('http://myDomain/');
Access-Control-Allow-methods
Définir les méthodes autorisées :
UResponse::setAccessControlMethods('GET, POST, PUT, DELETE, PATCH, OPTIONS');
Access-Control-Allow-headers
Définir les en-têtes autorisés :
UResponse::setAccessControlHeaders('X-Requested-With, Content-Type, Accept, Origin, Authorization');
Activation globale de CORS
activer CORS pour un domaine avec des valeurs par défaut :
Méthodes autorisées : « GET, POST, PUT, DELETE, PATCH, OPTIONS ».
En-têtes autorisés : « X-Requested-With, Content-Type, Accept, Origin, Authorization ».
UResponse::enableCors('http://myDomain/');
Test des en-têtes de réponse
Vérifier si les en-têtes ont été envoyés :
if(!UResponse::isSent()){
//do something if headers are not send
}
Test si le type de contenu de la réponse est application/json :
Important
Cette méthode ne fonctionne que si vous avez utilisé la classe UResponse pour définir les en-têtes.
if(UResponse::isJSON()){
//do something if response is a JSON response
}