クロスオリジン リソース共有 (CORS) 機能は、ポリシー ステートメントをオンデマンドでクライアントに提供し、リクエストがポリシーに準拠しているかどうか確認することで、クライアント側のクロスオリジン リクエストを制限します。この機能は、必要なときに構成し、有効にできます。

ポリシーには、許可される HTTP メソッドのセット、リクエストの送信元、有効なコンテンツ タイプが記述されています。これらはリクエスト URL によって異なり、locked.properties ファイルにエントリを追加することで必要に応じて再設定できます。

プロパティ名の後の省略記号は、プロパティでリストを使用できることを示します。

表 1. CORS プロパティ
プロパティ 値の種類 マスター デフォルト 他のデフォルト値
enableCORS true

false

false n/a
acceptContentType... http-content-type application/x-www-form-urlencoded,application/xml,text/xml

flexadmin=application/x-amf

admin=application/json,application/text,application/x-www-form-urlencoded

portal=application/json

view-vlsi-rest=application/json

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

flexadmin=true

health=true

misc =true

portal=true

rest=true

saml=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

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
注: この値は、 Horizon Client for Chrome の Chrome 拡張機能 ID になります。
n/a

locked.properties ファイルを使用して、CORS プロパティの使い方を説明します。

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

オリジンの確認

オリジンの確認は、デフォルトで有効になっています。有効な場合、リクエストが受け入れられるのは、オリジンがない場合か、オリジンが外部 URL に指定されたアドレス、balancedHostアドレス、portalHost アドレス、chromeExtension ハッシュ、null またはlocalhost に一致している場合だけです。オリジンがこのいずれかでない場合、「予期しないオリジン」エラーがログに記録され、ステータス 404 が返されます。

注: ブラウザによっては、Origin ヘッダーが提供されません、また、まったく提供されない場合もあります。Origin ヘッダーがない場合は、リクエストの Referer ヘッダーをチェックすることもできます。Referer ヘッダーでは、ヘッダー名に「r」が 1 つ含まれています。Referer ヘッダーを確認するには、 locked.properties ファイルに次のプロパティを追加します。
checkReferer=true

複数の Connection Server ホストやセキュリティ サーバがロード バランシングされている場合、locked.properties ファイルにbalancedHost エントリを追加して、ロード バランサのアドレスを指定する必要があります。このアドレスについては、ポート 443 が前提となります。

Unified Access Gateway アプライアンスまたは別のゲートウェイを介してクライアントが接続する場合、portalHost エントリを locked.properties ファイルに追加し、すべてのゲートウェイ アドレスを指定する必要があります。これらのアドレスについては、ポート 443 が前提となります。外部 URL が指定された名前と異なる名前で Connection Server ホストまたはセキュリティ サーバにアクセスするには、portalHost エントリの指定も必要です。

Chrome 拡張クライアントは、最初のオリジンに独自の ID を設定します。接続を許可するには、locked.properties ファイルに chromeExtension エントリを追加して、拡張機能を登録します。例:

chromeExtension.1=bpifadopbphhpkkcfohecfadckmpjmjd