Abilitazione del supporto CORS per un'API

Puoi abilitare il supporto CORS (Cross-Origin Resource Sharing) per la tua API. CORS consente agli script incorporati in una pagina web di chiamare l'API tra i confini di domini.

Prima di iniziare

Questa attività è correlata a una definizione API OpenAPI 3.0 . Per i dettagli su come configurare una definizione API OpenAPI 2.0 , vedi Modifica di una definizione API OpenAPI 2.0.

Informazioni su questa attività

Nota:
  • Il supporto CORS è disponibile solo su DataPower® API Gateway.
  • Quando CORS è abilitato, il API Gateway esegue la politica di preflusso cors per gestire tutte le richieste CORS effettuate all'API.
  • Quando CORS è abilitato e viene ricevuta una richiesta preflight, vengono eseguite solo le azioni API riportate di seguito:
    • La politica di preflusso cors configura le intestazioni di risposta appropriate.
    • Le intestazioni di risposta sono impostate.
  • Quando viene ricevuta una richiesta preflight, l'indicatore request.attributes.isCORSPreflight è impostato su true.
  • Per tutte le richieste preflight, le politiche di preflusso security e client-identification vengono sempre ignorate, indipendentemente dal fatto che CORS sia abilitato o meno.

Puoi completare questa attività utilizzando l'applicazione IU API Designer o utilizzando l'IU API Manager basata sul browser.

In qualsiasi momento, puoi passare direttamente all'origine YAML OpenAPI sottostante facendo clic sull'icona Origine Icona origine OpenAPI. Per tornare al modulo di progettazione, fare clic su Modulo Icona modulo.

Procedura

Per abilitare il supporto CORS per un'API, completa la seguente procedura:

  1. Apri l'API per la modifica, come descritto in Modifica di una definizione API OpenAPI 3.0.
  2. Selezionare la scheda Gateway , espandere Impostazioni gateway e portale, quindi fare clic su CORS.
    Viene aperta la pagina CORS .
  3. Selezionare Abilita CORS.
  4. Facoltativo: configurare una politica CORS.
    Si desidera creare una politica CORS? Esaminare le seguenti considerazioni:
    • Una politica CORS è una parte facoltativa di una definizione API. Se una definizione API non ha una politica CORS ma CORS è abilitata, le richieste CORS verranno accettate da tutte le origini.

      Se si desidera accettare le richieste CORS da tutte le origini, abilitare CORS ma non aggiungere una politica CORS alla definizione API.

    • Se crei una politica CORS, le richieste CORS verranno accettate solo dalle origini esplicitamente elencate nelle regole CORS contenute nella politica CORS. Le richieste CORS da qualsiasi altra origine verranno rifiutate.

      Se vuoi accettare le richieste CORS solo da un numero limitato di origini (e potresti anche voler configurare le intestazioni di risposta Access - Control - Allow - Credentials e Access - Control - Expose - Headers), devi abilitare CORS e creare una politica CORS. Solo le Origini esplicitamente elencate nel campo di origine consentita delle regole CORS nella politica CORS verranno accettate; le richieste CORS da qualsiasi origine non elencata verranno rifiutate.

    • Per configurare una nuova politica CORS, completare la seguente procedura:
      1. Insieme a Politica CORS, fai clic su Aggiungi.
      2. Per includere l'intestazione Access-Control-Allow-Credentials: true in una risposta. selezionare Consenti credenziali. L'intestazione della risposta Access-Control-Allow-Credentials indica ai browser se esporre la risposta al codice JavaScript di frontend quando la modalità delle credenziali della richiesta (Request.credentials) è impostata su include.
      3. Per aggiungere uno o più dei seguenti valori all'intestazione della risposta Access-Control-Expose-Headers , selezionare Esponi intestazionie selezionare una delle seguenti opzioni:
        • Predefinito - Il Valore Predefinito del Gateway. Questa opzione è selezionata per impostazione predefinita.
        • Backend - Il valore di Access-Control-Expose-Headers dalla risposta backend.
        • Personalizzato - Una stringa personalizzata.
      4. Fare clic su Crea.
      5. Accanto a Origini consentite , fare clic su Aggiungi.
      6. Immettere l'origine URL, quindi fare clic su Crea. Questa impostazione indica che la risposta può essere condivisa con il codice di richiesta dall'origine specificata.
    • Per modificare una politica CORS esistente, fare clic sulla voce Origini consentite nella pagina CORS . È quindi possibile modificare singoli URL di origine, aggiungere ulteriori origini e modificare l'impostazione Consenti credenziali .
    Esempio
    Il seguente esempio ha tre regole:
    • Accetta un'intestazione Origin di https://example.come restituisci Access-Control-Allow-Credentials: true nella risposta CORS.
    • Accetta un'intestazione Origin di http://domain.com. Nella risposta non verrà restituita alcuna intestazione Access-Control-Allow-Credentials .
    • Accettare una delle seguenti intestazioni Origine:
      • http://example2.com
      • http://example3.com
      • http://example4.com
      Nella risposta non verrà restituita alcuna intestazione Access-Control-Allow-Credentials .
      cors:
        enabled: true
        policy:
          -
            allow-origin:
              - 'https://example.com'
            allow-credentials: true
          -
            allow-origin:
              - 'http://domain.com'
          -
            allow-origin:
              - 'http://example2.com'
              - 'http://example3.com'
              - 'http://example4.com'
  5. Fare clic su Salva per salvare le modifiche.
  6. Facoltativo: per implementare la tua propria soluzione CORS utilizzando le operazioni OPTIONS personalizzate, completa la seguente procedura:
    1. Aggiungere le seguenti intestazioni alle risposte di HTTP :
      Access-Control-Allow-Origin: https://<portalhostname>
      Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept 
      Dove <portalhostname> è il nome host del portale CMS.
    2. Facoltativo: puoi eseguire il proxy della tua API tramite API Connect come un'API di richiamo forzata in modo che CORS venga gestito automaticamente.
    Importante:
    • Se si implementa la propria soluzione CORS, è necessario disattivare l'opzione CORS descritta al passo 3
    • Le richieste di preflight CORS vengono inviate utilizzando il metodo HTTP OPTIONS . Pertanto, se si desidera che queste richieste siano gestite dal gateway API Connect , è necessario abilitare il metodo OPTIONS per tutte le API che gestiranno le richieste di preflight; consultare Definizione dei percorsi per un'API REST.
    • Le richieste OPTIONS vengono conteggiate come chiamate API rispetto a qualsiasi limite di frequenza configurato. Nota: puoi applicare i limiti di frequenza a singole operazioni; vedi Definizione dei limiti di frequenza per un'operazione API.