Die CORS-Funktion (Cross-Origin Resource Sharing, Ressourcenfreigabe zwischen verschiedenen Ursprüngen) steuert die clientseitigen Anforderungen verschiedener Herkunft durch Bereitstellen von Richtlinienanweisungen für den Client nach Bedarf und Überprüfen der Anforderungen auf Einhaltung der Richtlinie. Diese Funktion kann konfiguriert und bei Bedarf aktiviert werden.

Zu den Richtlinien gehört der Satz zulässiger HTTP-Methoden sowie die Festlegung, woher Anforderungen stammen können und welche Arten von Inhalten gültig sind. Diese Richtlinien variieren je nach Anforderungs-URL und können durch Hinzufügen von Einträgen zur Datei locked.properties nach Bedarf neu konfiguriert werden.

Ein Auslassungszeichen nach einem Eigenschaftsnamen weist darauf hin, dass für die Eigenschaft eine Liste verwendet werden kann.

Tabelle 1. CORS-Eigenschaften
Eigenschaft Werttyp Primäre Standardeinstellung Sonstige Standardeinstellungen
enableCORS true

false

true n/a
acceptContentType... http-content-type application/x-www-form-urlencoded,application/xml,text/xml admin=application/json,application/text,application/x-www-form-urlencoded

portal=application/json

rest=application/json

sse=application/json

view-vlsi-rest=application/json

acceptHeader... http-header-name * admin=Accept,Accept-Encoding,Accept-Charset,Accept-Language,Authorization,Cache-Control,Connection,Content-Language,Content-Length,Content-Type,Cookie,csrftoken,DNT,Host,Origin,Referer,User-Agent

broker=Accept,Accept-Encoding,Accept-Charset,Accept-Language,Authorization,Connection,Content-Language,Content-Length,Content-Type,Cookie,Gateway-Location,Gateway-Name,Gateway-Type,Host,Origin,Referer,User-Agent,X-CSRF-Token,X-EUC-Gateway,X-EUC-Health,X-Forwarded-For,X-Forwarded-Host,X-Forwarded-Proto

portal=Accept,Accept-Encoding,Accept-Charset,Accept-Language,Authorization,Connection,Content-Language,Content-Length,Content-Type,Cookie,Host,Origin,Referer,User-Agent,X-CSRF-Token

rest=Accept,Accept-Encoding,Accept-Charset,Accept-Language,Authorization,Connection,Content-Language,Content-Length,Content-Type,Cookie,csrfToken,Host,Origin,Referer,User-Agent,X-Require-Cloud-Admin-Privilege

view-vlsi=Accept,Accept-Encoding,Accept-Charset,Accept-Language,Authorization,Connection,Content-Language,Content-Length,Content-Type,Cookie,csrfToken,Host,Origin,Referer,User-Agent,X-Require-Cloud-Admin-Privilege

view-vlsi-rest=Accept,Accept-Encoding,Accept-Charset,Accept-Language,Authorization,Connection,Content-Language,Content-Length,Content-Type,Cookie,csrfToken,Host,Origin,Referer,User-Agent,X-Require-Cloud-Admin-Privilege

exposeHeader... http-header-name * n/a
filterHeaders true

false

true n/a
checkOrigin true

false

true n/a
checkReferer true

false

false n/a
allowCredentials true

false

false admin =true

broker=true

health=true

misc =true

portal=true

rest=true

saml=true

sse=true

tunnel=true

view-vlsi=true

view-vlsi-rest=true

allowMethod... http-method-name GET,HEAD,POST health =GET,HEAD

misc =GET,HEAD

rest=GET,POST,PUT, PATCH,DELETE

saml =GET,HEAD

sse=GET,POST

tunnel=GET,POST

allowPreflight true

false

true n/a
maxAge cache-time 0 n/a
balancedHost... load-balancer-name OFF n/a
portalHost... gateway-name OFF n/a
chromeExtension... chrome-extension-hash ppkfnjlimknmjoaemnpidmdlfchhehel
Hinweis: Dieser Wert ist die Chrome-Erweiterungs-ID für Horizon Client für Chrome.
n/a

Nachfolgend finden Sie Beispiele für CORS-Eigenschaften in der Datei locked.properties.

enableCORS = true
allowPreflight = true
checkOrigin = true
checkOrigin-misc = false
allowMethod.1 = GET
allowMethod.2 = HEAD
allowMethod.3 = POST
allowMethod-saml.1 = GET
allowMethod-saml.2 = HEAD
acceptContentType.1 = application/x-www-form-urlencoded
acceptContentType.2 = application/xml
acceptContentType.3 = text/xml

Überprüfen der Herkunft

Das Überprüfen des Ursprungs, also der Herkunft, ist standardmäßig aktiviert. Wenn diese Funktion aktiviert ist, wird eine Anforderung nur ohne Ursprung akzeptiert oder wenn sie von der Adresse in der externen URL, einer beliebigen balancedHost-Adresse, einer beliebigen portalHost-Adresse, einem beliebigen chromeExtension-Hash, von null oder localhost stammt. Bei einem anderen Ursprung wird der Fehler „Unerwartete Herkunft“ protokolliert und der Status „404“ zurückgegeben.

Hinweis: Einige Browser stellen (unter Umständen) keinen Ursprungsheader bereit. Optional kann der Referenzheader in einer Anforderung bei nicht vorhandenem Ursprungsheader überprüft werden. Der Referenzheader weist ein „r“ im Headernamen auf. Um den Referenzheader zu überprüfen, fügen Sie der Datei locked.properties folgende Eigenschaft hinzu:
checkReferer=true

Wenn die Lasten mehrerer Verbindungsserver-Hosts ausgeglichen sind, müssen Sie die Adresse des Lastausgleichsdiensts angeben, indem Sie der locked.properties-Datei einen balancedHost-Eintrag hinzufügen. Port 443 wird für diese Adresse vorausgesetzt.

Wenn die Clients die Verbindung über eine Unified Access Gateway-Appliance oder ein anderes Gateway herstellen, müssen Sie alle Gateway-Adressen durch Hinzufügen von portalHost-Einträgen zur Datei locked.properties angeben. Port 443 wird für diese Adressen vorausgesetzt. Sie müssen außerdem portalHost-Einträge angeben, um den Zugriff auf einen Verbindungsserver-Host zu gewähren. Der Name muss sich dabei von dem von der externen URL angegebenen Namen unterscheiden.

Chrome-Erweiterung-Clients legen ihren ersten Ursprung mit ihrer eigenen Identität fest. Damit Verbindungen erfolgreich hergestellt werden können, muss die Erweiterung durch Hinzufügen eines chromeExtension-Eintrags zur Datei locked.properties registriert werden. Beispiel:
chromeExtension.1=bpifadopbphhpkkcfohecfadckmpjmjd 

Siehe auch Hostprüfung.