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
}