Exemple de configuration JSON CORS

Voici un exemple de contenu pour cors-rules.json.

Cet exemple de contenu de fichier JSON illustre les points importants :
  • Priorité des règles Les règles sont évaluées dans l'ordre où elles apparaissent dans le fichier et l'évaluation s'arrête une fois qu'une correspondance est trouvée. Dans cet exemple, les deux premières règles s'appliquent toutes deux aux origines http://this.example.com et http://that.example.com. La première autorise l'accès en lecture seule ("GET") aux ressources qui correspondent à /api/data/documents. La seconde autorise l'accès en lecture-écriture à d'autres ressources qui correspondent à /api/data. Etant donné que /api/data/documents est plus spécifique que /api/data, elle DOIT venir en premier. Si l'ordre des deux règles est inversé, le filtre CORS ignore la règle /api/data/documents, car les requêtes pour /api/data/documentscorrespondent à /api/data.
  • Informations d'identification Les deux premières règles autorisent les informations d'identification ("allowCredentials": true), mais la troisième règle ne l'autorise pas. Etant donné que l'API Freebusy de Domino Access Services (DAS) est destinée à autoriser les requêtes anonymes, il n'est pas nécessaire d'accepter les données d'identification pour les requêtes correspondant à /api/freebusy.
  • Comportement par défaut Les requêtes d'origine croisée sont désactivées lorsqu'aucune règle de correspondance n'est trouvée pour une ressource. Il n'y a pas de règle pour les ressources correspondant à /api/calendar. Par conséquent, la configuration suivante désactive les requêtes d'origine croisée pour l'API d'agenda DAS. Par défaut, les requêtes d'origine croisée sont toujours désactivées.
{
  "version": "1.0",
  "rules": [
    {
      "resource": {
        "path": "/api/data/documents"
      },
      "allowOrigins": [ "http://this.example.com", "http://that.example.com" ],
      "allowMethods": [ "GET" ],
      "allowCredentials": true
    },
    {
      "resource": {
        "path": "/api/data"
      },
      "allowOrigins": [ "http://this.example.com", "http://that.example.com" ],
      "allowMethods": [ "GET", "POST", "PUT", "DELETE" ],
      "allowCredentials": true,
    },
    {
      "resource": {
        "path": "/api/freebusy"
      },
      "allowOrigins": [ "http://this.example.com" ],
      "allowMethods": [ "GET" ]
    }
  ]
}