Activer le CORS sur CakePHP v3.x – Introduction

Après de looooooooongs mois sous silence, me revoilà avec un article sur l’activation du CORS sur CakePHP v3.x. Si vous maitrisez déjà les concepts du CORS vous pouvez directement vous rendre sur la page pratique.

Le CORS ?!?! Revenir après autant de temps et discuter de ce sujet ??? quel intérêt ?

Et bien, ces derniers mois, j’ai quelque peu délaissé le développement avec ce magnifique CakePHP pour me lancer dans le dev front-end sur Angular2. Et puis, une chose après l’autre, je me suis également pris de passion pour le framework Ionic2, un framework développement Cross-Plateform (WP, iOS, Android). Et dans le cadre professionnel, je suis impliqué dans plusieurs projets NodeJS/Loopback.

Quel rapport avec CakePHP et le CORS me direz-vous ? Nous allons faire un peu de théorie :

Et bien dans les schémas de développement FrontEnd/BackEnd (« web 2.0 »), la majorité des services fournis par le serveur (en BackEnd donc) est « consommé » par le FrontEnd (le client donc)  via une (ou plusieurs) API REST. Cette API REST peut renvoyer les données généralement au format JSON (ou XML, ou autre, c’est vous qui voyez).

Fondamentalement donc, un serveur peut très bien ne plus présenter aucun fichier HTML aux clients qui se connectent et ne fournir que des services REST. On considère alors que le FrontEnd n’est pas un service rendu par le serveur WEB. Ce qui fait que l’on peut très bien héberger un client WEB HTML sur un serveur situé dans un domaine différent que le serveur qui fournit le service REST.

Pour vous donner une idée des différences existantes entre le « Web 1.0 » et le « Web 2.0 », j’ai trouvé ces schémas sur ce site :

 

 

 

 

 

Quand ce système est prévu par les concepteurs il n’y a pas de problème, mais qu’en est-il lorsque vous ne voulez pas que vos services REST soient consommés par des clients HTML (ou mobiles)  situés dans un domaine différent du votre ?

C’est là qu’intervient le CORS. Cet acronyme signifie « Cross Origin Ressource Sharing », autrement dit vous autorisez que la donnée produite par votre serveur soit consommée par un client qui n’est pas situé dans votre domaine  (à noter que ce mécanisme CORS est implémenté au niveau des navigateurs internet. Il n’est pas présent sur des outils comme cUrl, Postman ou Paw). Pour que le navigateur puisse accepter de récupérer des données en provenance de votre serveur, ce dernier devra répondre avec une entrée dans le header de réponse intitulé « Access-Control-Allow-Origin », cette entrée indiquera quels domaines sont autorisés à requêter le serveur (avec un caractère générique * pour indiquer que tous les domaines sont autorisés).

Après la théorie, la pratique : comment activer le CORS avec CakePHP v3.x ? Lisez l’article pratique ici.

Vous pouvez trouver d’autres informations intéressantes sur ces pages :

Le blog Inovia : http://blog.inovia-conseil.fr/?p=202

La recommandation officielle du W3C: https://www.w3.org/TR/cors/

Un bon article de la fondation Mozilla : https://developer.mozilla.org/fr/docs/HTTP/Access_control_CORS

L’image de l’article est tirée du blog Inovia

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *