Mit CORS arbeiten
Cross-Origin Resource Sharing (CORS) ist ein Header-basiertes Protokoll, mit dem JavaScript in Ihrem Namen Anforderungen für den Zugriff auf Ressourcen in einer anderen Domain stellen kann. Konfigurieren Sie Cloud Gate so, dass es CORS aktiviert und CORS-Einstellungen für Cloud Gate erzwingt, das in App-Gateway- oder IAM-Identitätsdomains ausgeführt wird.
CORS verhindert, dass bösartige JavaScript (die von Angreifern in eine Website gepflanzt werden, z. B. durch Werbung) AJAX-Anfragen in Ihrem Namen stellt. Betrügerische AJAX-Anfragen können Geld von Ihrer Bank abheben oder Einkäufe in Ihrem Namen auf einer Online-Shopping-Website tätigen. Diese Anforderungen können erfolgreich sein, wenn Sie derzeit eine aktive Session mit diesen Sites haben. CORS schreibt vor, dass der Browser JavaScript die Antwort nicht anzeigen (oder darauf zugreifen kann), wenn ein Server nicht mit dem richtigen Satz von Antwortheadern antwortet.
- Domain - Beispiel:
site1.oraclecloud.comruftoracle.comauf - subdomain - Beispiel:
site1.oraclecloud.comruftsite7.oraclecloud.comauf - port - Beispiel:
site1.oraclecloud.comruftsite1.oraclecloud.com:3030auf - Protokoll - Beispiel:
https://site1.oraclecloud.comrufthttp://site1.oraclecloud.comauf
Eine CORS-Anforderung wird in zwei Formen bereitgestellt: eine einfache CORS-Anforderung oder eine Preflight-CORS-Anforderung.
Einfache CORS-Anforderung
- Die Methode ist eine der folgenden:
GETPOSTHEAD
- Die zulässigen HTTP-Header, die der einfachen CORS-Anforderung manuell hinzugefügt werden können, sind:
AcceptAccept-LanguageContent-LanguageContent-TypeDPRDownlinkSave-DataViewport-WidthWidth
- Wenn
Content-Typefestgelegt ist, muss Folgendes gelten:application/x-www-form-urlencodedmultipart/form-datatext/plain
CORS-Anforderung vor dem Start
Wenn die JavaScript-Anforderung die Eigenschaften einer einfachen CORS-Anforderung nicht erfüllt, wird eine Preflight-CORS-Anforderung an die Ressource in der anderen Domain gesendet.
Die Preflight-CORS-Anforderung testet, ob die tatsächliche Anforderung an diese Ressource gesendet werden kann, indem bestimmte HTTP-Header in die Anforderung mit den Daten aufgenommen werden, die dazu geführt haben, dass der Preflight-Anforderungsfluss ausgelöst wurde. Mit anderen Worten: Wenn in der HTTP-Anforderung JavaScript einige Methoden/Header in der HTTP-Anforderung angegeben wurden, für die eine Preflight-CORS-Anforderung erforderlich war, fragt die Preflight-CORS-Anforderung die Ressource für diese Methode/Header ab, um zu prüfen, ob die Ressource eine solche domainübergreifende Anforderung akzeptiert.
Cloud Gate-CORS-Konfigurationseigenschaften und -Attribute
| CORS-Eigenschaft | Beschreibung |
|---|---|
cloudGateCorsEnabled |
Boolesche Eigenschaft zum Aktivieren der Cloud Gate-CORS-Unterstützung für den Mandanten. Diese Einstellung muss wie folgt konfiguriert werden: Wenn Sie das Kennzeichen Der Standard ist Best Practice Konfigurieren Sie |
cloudGateCorsAllowedOrigins |
Die Eigenschaft ist ein Zeichenfolgenarray, das die Liste der zulässigen CORS-Ursprünge enthält. Der Standardwert ist ein leeres Array. Jede CORS-Anforderung gibt ihre Quelle oder ihren Ursprung im Origin-Anforderungsheader an. Der Wert des Ursprungsheaders wird mit dieser Liste abgeglichen. Wenn der Ursprung abgeglichen ist, fügt Cloud Gate der Antwort die entsprechenden CORS-Header hinzu. Wenn der Ursprung nicht übereinstimmt, gibt Cloud Gate keine CORS-Antwortheader zurück. Dadurch wird die Antwort vom Browser abgelehnt. Zulässige CORS-Werte in der Eingabevorlage:
Beispiele:
|
cloudGateCorsAllowNullOrigin |
Boolesche Eigenschaft zur Unterstützung von Szenarios, in denen der Browser einen "Null"-Ursprung sendet. Diese Einstellung muss wie folgt konfiguriert werden: Der Standard ist Ein "Null"-Ursprung wird gesendet, wenn die CORS-Anforderung von einer Datei auf dem Computer eines Benutzers stammt oder wenn ein Server als Antwort auf eine CORS-Anforderung an einen anderen Server umleitet. Der Browser übergibt einen "null" Ursprung, wenn er den Ursprung als "behalten" betrachtet. Um die Sicherheit zu erhöhen, sind standardmäßig "null" Origins nicht zulässig. Einige "null" Ursprünge sind gültig. Anwendungen, bei denen die OpenID Connect-(OIDC-)Browserablaufanmeldung der Identitätsdomain verwendet wird, sehen "null" Ursprünge, die an ihre Cloud Gate-Knoten gesendet werden. Wenn Cloud Gate an die Identitätsdomain umleitet und den Endpunkt autorisiert, die OIDC-Browseranmeldung zu starten, und wenn die Identitätsdomain die Anforderung zurück an Cloud Gate umleitet, ist der Ursprung "null". |
cloudGateCorsMaxAge |
Eine Ganzzahl, die angibt, wie viele Sekunden der Client (Browser) eine Preflight-CORS-Antwort cachen kann. |
cloudGateCorsExposedHeaders |
Die Eigenschaft ist ein Zeichenfolgenarray, das die Antwortheader auflistet, die dem Antwortheader Der Standardwert ist ein leeres Array. |
Cloud Gate-CORS-Einstellungen in Identitätsdomains konfigurieren
Cloud Gate erfordert, dass Sie die folgenden Einstellungen in Identitätsdomains für die Unterstützung von Cross-Origin Resource Sharing (CORS) konfigurieren.
isCorsAllowed im Web Tier Policy-Dokument auf true konfiguriert wurde, lässt Cloud Gate CORS-Anforderungen vor dem Start in geschützte Anwendungen zu. Die mindestens erforderliche Cloud Gate-Version ist 21.1.2.
Verwenden Sie den Endpunkt /admin/v1/Settings/Settings, um die CORS-Einstellungen zu konfigurieren. Die Anforderung ist ein patch-Vorgang. Weitere Informationen finden Sie unter Einstellung aktualisieren.
Einfache und Preflight-CORS-Anforderungsworkflows
Überblick über CORS-(Cross-Origin Resource Sharing-)Anforderungsworkflows.
Einfacher CORS-Anforderungsworkflow
- Die Anforderung wird als CORS-Anforderung identifiziert, weil der Origin-Anforderungsheader vorhanden ist.
- Falls erforderlich (z.B. Cacheablauf), werden die Cloud Gate-CORS-Einstellungen von Identitätsdomains in IAM heruntergeladen.
- Cloud Gate verarbeitet die Anforderung. Die Anforderung wird entweder abgelehnt oder an den Upstream-Anwendungsserver weitergeleitet.
- Bevor eine Antwort zurückgegeben wird, erzwingt Cloud Gate CORS gemäß der Definition in den Cloud Gate-CORS-Einstellungen.
- Cloud Gate stellt immer sicher, dass der variable Antwortheader Teil der Antwort ist - und den "Ursprungs"-Header enthält. Dies gilt auch für Nicht-CORS-Anfragen.
- Wenn
cloudGateCorsEnabledfalseist, wird die Verarbeitung hier gestoppt. Die Reaktion wird unverändert zurückgegeben. - Cloud Gate prüft, ob der Ursprung zulässig ist. Dabei wird die konfigurierte Liste der zulässigen Ursprünge verwendet.
Wenn der Ursprung nicht zulässig ist, werden alle unterstützten CORS-Antwortheader aus der Antwort entfernt, und die Verarbeitung endet.
- Der Antwortheader
Access-Control-Allow-Originwird dem Wert des Ursprungsanforderungsheaders hinzugefügt und konfiguriert. - Der Antwortheader
Access-Control-Allow-Credentialswird zutruehinzugefügt und konfiguriert. - Die
Access-Control-Expose-Headersist für die Schnittmenge zwischen dem WertcloudGateCorsExposedHeadersund der Liste der Header konfiguriert, die in der Antwort zurückgegeben werden. Access-Control-Allow-Methods,Access-Control-Allow-HeadersundAccess-Control-Max-Age Response Headerswerden aus der Antwort entfernt.
- Cloud Gate gibt seine Antwort zurück.
Cloud Gate überschreibt die Header Access-Control-Allow-Origin und Access-Control-Allow-Credentials Response, wenn sie vom Upstreamanwendungsserver festgelegt werden.
CORS-Anforderungsworkflow vor dem Start
- Die Anforderung wird als CORS-Anforderung identifiziert, weil der Origin-Anforderungsheader vorhanden ist.
- Falls erforderlich (z.B. Cacheablauf), werden die Cloud Gate-CORS-Einstellungen von Identitätsdomains in IAM heruntergeladen.
- Die Anforderung wird durch die OPTIONS-Methode und den
Access-Control-Request-Method-Anforderungsheader zusätzlich zum Origin-Anforderungsheader als Preflight-CORS-Anforderung identifiziert. - Wenn
cloudGateCorsEnabledtrueist, kann die Anforderung an den Upstream-Anwendungsserver weitergeleitet werden, damit Anwendungen CORS implementieren können.Wenn
cloudGateCorsEnabledfalseist, wird die alte Web Tier Policy-EinstellungisCorsAllowednoch berücksichtigt - kurz später in der Anforderungsverarbeitung. - Bevor die Antwort von Cloud Gate zurückgegeben wird, wird CORS gemäß den Cloud Gate-CORS-Einstellungen durchgesetzt.
- Cloud Gate stellt immer sicher, dass der variable Antwortheader Teil der Antwort ist - und den "Ursprungs"-Header enthält. Dies gilt auch für nonCORS-Anforderungen.
- Wenn
cloudGateCorsEnabledfalseist, wird die Verarbeitung hier gestoppt. Die Reaktion wird unverändert zurückgegeben. - Cloud Gate prüft, ob der Ursprung zulässig ist. Dabei wird die konfigurierte Liste der zulässigen Ursprünge verwendet.
Wenn der Ursprung nicht zulässig ist, werden alle unterstützten CORS-Antwortheader aus der Antwort entfernt, und die Verarbeitung endet.
- Der Antwortheader
Access-Control-Allow-Originwird dem Wert des Ursprungsanforderungsheaders hinzugefügt und konfiguriert. - Der Antwortheader
Access-Control-Allow-Credentialswird zutruehinzugefügt und konfiguriert. - Wenn der Upstreamanwendungsserver den Antwortheader
Access-Control-Allow-Methodsnicht hinzugefügt hat, erstellt Cloud Gate seinen Wert wie folgt:- Wenn der Antwortheader "Antwort zulassen" in der Antwort enthalten ist, verwendet Cloud Gate seinen Wert.
- Wenn der
Access-Control-Request-Method-Anforderungsheader in der Anforderung gefunden wird, verwendet Cloud Gate seinen Wert.
- Wenn der Upstreamanwendungsserver den Antwortheader
Access-Control-Allow-Headersnicht hinzugefügt hat, verwendet Cloud Gate den Wert desAccess-Control-Request-Headers-Anforderungsheaders in der Anforderung, sofern vorhanden. - Wenn
cloudGateCorsMaxAgemit einem Wert größer als Null konfiguriert ist, wird derAccess-Control-Max-Age-Antwortheader dem maximalen Alterswert hinzugefügt und konfiguriert. Wenn der Wert fürcloudGateCorsMaxAgeNull oder kleiner ist, wird keine Aktion für den AntwortheaderAccess-Control-Max-Ageausgeführt. - Der Antwortheader
Access-Control-Expose-Headerswird entfernt. Es gilt nicht für Preflight-Antworten.
- Cloud Gate gibt seine Antwort zurück.