Corregit error de CORS

Quan s'intentava fer una petició CORS amb l'opció credentials: true no
es podia realitzar correctament perquè no s'establien les capçaleres
correctes.

Aquest commit soluciona aquest problema.

Change-Id: Ief13517d9ec034b8ba9169d5d317fe161bc13799
diff --git a/config.default.php b/config.default.php
index 5c92950..13ce1ae 100644
--- a/config.default.php
+++ b/config.default.php
@@ -30,6 +30,12 @@
 //   Exemple: https://covid.fme.upc.edu/
 $conf['frontendUrl'] = '';
 
-// Valor del header Access-Control-Allow-Origin per les peticions a l'API.
-// Per defecte és el valor de la variable $conf['homeUrl']
-$conf['allowedOrigin'] = $conf['homeUrl'];
+// Llistat d'orígens permesos per interactuar amb l'API.
+//
+// NOTA: És important que els valors de l'array no acabin amb un "/" final.
+//   Exemple: ['https://covid.fme.upc.edu']
+$conf['allowedOrigins'] = [];
+
+// Ignorar la llista d'orígens permesos i permetre a qualsevol pàgina web
+// interactuar amb l'API
+$conf['allowAllOrigins'] = false;
diff --git a/inc/API.php b/inc/API.php
index a3607bb..b8aa454 100644
--- a/inc/API.php
+++ b/inc/API.php
@@ -50,13 +50,23 @@
     return $json;
   }
 
+  private static function setCORSHeaders() {
+    global $conf;
+    if ((isset($conf['allowAllOrigins']) && $conf['allowAllOrigins']) ||
+        (isset($conf['allowedOrigins']) &&
+        isset($_SERVER['HTTP_ORIGIN']) &&
+        in_array($_SERVER['HTTP_ORIGIN'], $conf['allowedOrigins']))) {
+      header('Access-Control-Allow-Origin: '.($_SERVER['HTTP_ORIGIN'] ?? '*'));
+      header('Access-Control-Allow-Credentials: true');
+    }
+  }
+
+
   public static function process($path) {
     global $conf;
 
     header('Content-Type: application/json');
-
-    if (isset($conf['allowedOrigin']) && !empty($conf['allowedOrigin']))
-      header('Access-Control-Allow-Origin: '.$conf['allowedOrigin']);
+    self::setCORSHeaders();
 
     $parts = explode('/', $path);
     $method = $parts[0] ?? '';