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.
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
. Per tornare al modulo di progettazione, fare clic su Modulo
.
Procedura
Per abilitare il supporto CORS per un'API, completa la seguente procedura:
- Apri l'API per la modifica, come descritto in Modifica di una definizione API OpenAPI 3.0.
- Selezionare la scheda Gateway , espandere Impostazioni gateway e portale, quindi fare clic su CORS.
Viene aperta la pagina CORS .
- Selezionare Abilita CORS.
- 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:
- Insieme a Politica CORS, fai clic su Aggiungi.
- 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.
- 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.
- Fare clic su Crea.
- Accanto a Origini consentite , fare clic su Aggiungi.
- 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'
- Fare clic su Salva per salvare le modifiche.
- Facoltativo: per implementare la tua propria soluzione CORS utilizzando le operazioni OPTIONS personalizzate, completa la seguente procedura:
- 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.
- 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.