Prise en charge du partage des ressources entre origines (CORS)

Traduit automatiquement de Deepl

Vous est-il déjà arrivé de créer une demande de données HTTP et de vous heurter à une erreur rouge « l’accès à la demande HTML a été bloqué par la politique des cors » ?

Lorsque votre site se trouve sur le même domaine que le serveur du service web, il n’y a aucun problème. Cependant, ce n’est pas le cas lorsque vous effectuez une requête d’origine croisée. L’accès est refusé en raison de la sécurité du navigateur qui empêche les requêtes HTTP vers un autre domaine. Le résultat ? Une erreur de politique CORS.

Pour vous aider à autoriser explicitement certaines demandes d’origine croisée sur votre serveur, 4D prend désormais en charge le protocole CORS. L’accès aux données à l’aide de requêtes d’origine croisée vient de devenir plus facile !

Le protocole CORS empêche les pages Web d’effectuer des requêtes vers des domaines autres que le leur. Mais parfois, vous pouvez avoir besoin d’autoriser d’autres sites à faire des demandes de données HTTP à votre serveur. Heureusement, 4D propose deux façons de définir les règles CORS et d’autoriser explicitement certaines requêtes d’origine croisée:

  • via la programmation, ou
  • via les paramètres de la base de données.

Gérer les CORS par programmation

Vous pouvez activer CORS à l’aide de deux commandes :

//CORS Domains Settings
$settings
:=New collection
$settings .push(New object("host" ; "127.0.0.1:8888" ; "methods" ; "get;put;post"))
$settings .push(New object("host" ; "https://blog.4d.com/" ; "methods" ; "get;post"))

//enable CORS
WEB SET OPTION (Web CORS enabled;1)

//CORS Domains Settings
WEB SET OPTION (Web CORS settings;$settings)

//start web server to apply CORS settings
WEB START SERVER

$hostWS$setting:=WEB Server(Web host database server)
$setting :=New object

//Enable CORS
$setting .CORSEnabled:=True

//CORS Domains Settings
$setting .CORSSettings:=New collection
$setting .CORSSettings.push(New object("host" ; "127.0.0.1:8888" ; "methods" ; "get;put;post"))
$setting .CORSSettings.push(New object("host" ; "https://blog.4d.com/" ; "methods" ; "get;post"))

//start web server and apply CORS settings
$hostWS.start( xml-ph-0

Gérer CORS par les paramètres de la base de données

De nouveaux paramètres sont disponibles dans l’onglet Paramètres > Web > Options (II):

Il suffit d’ajouter les noms de domaine autorisés et les méthodes disponibles. Au prochain démarrage du serveur, ils seront utilisés automatiquement.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené a rejoint l'équipe du programme 4D en novembre 2016. En tant que Product Owner, il est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Après avoir obtenu une licence en informatique au CNAM, Fabrice a rejoint une petite société d'édition de logiciels en tant que développeur Windev. Il a ensuite travaillé pour différentes entreprises dans les domaines de l'industrie et du commerce en tant que développeur Windev et web ainsi que conseiller technique sur les nouvelles fonctionnalités.