オリジン間リソース共有 (Cross Origin Resource Sharing: CORS) は、同一オリジンポリシーを緩和する基準です。これは、オリジン間の一部のリクエストを明示的に許可しながら、その他のリクエストを拒否する場合に使用します。たとえば、サイトで埋め込み可能なサービスを提供する場合、特定の制限を緩和する必要が生じる場合があります。
CORS が有効ではなく、アプリケーションとサービスの URL がそれぞれ異なるドメインにある場合、Web ブラウザーのコンソールに次のエラーが表示されます。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://some-url-here. (Reason: additional information here).
GeneXus は、アプリケーションの適切な動作を保証するため、CORS が必要とするヘッダーの処理をサポートしています。
一般的には、最終的に別のドメインにデプロイされる REST サービスを呼び出す
Angular アプリケーションで必要になります。
環境変数 GX_CORS_ALLOW_ORIGIN を使用することで、選択したホストの CORS を有効にできます。
この変数に設定できる値は URL または「*」です。たとえば、https://foo.example です。
注: .NET ジェネレーターでは、変数としてドメインのコンマ (,) 区切りのリストを使用できます。たとえば、CORS_ALLOW_ORIGIN=https://foo.example,https://another.domain です。
環境変数 GX_CORS_ALLOW_ORIGIN が有効な場合、生成されたアプリケーションは CORS の仕様に基づいて次のヘッダーを返します。
-
- 現在呼び出されているサービスがサポートするすべてのメソッドを返します。
-
-
- 環境変数 GX_CORS_ALLOW_ORIGIN が返されます。
-
-
GeneXus REST エンドポイントへの OPTIONS リクエストの応答例を次に示します:
Access-Control-Allow-Origin: https://myapp.domain.com
Access-Control-Allow-Headers: GET, POST
Access-Control-Max-Age: 86400
Access-Control-Allow-Credentials: true
環境変数 GX_CORS_ALLOW_ORIGIN が定義されていると、プリフライト OPTIONS リクエストで期待されるヘッダー (上記の定義) が返されないことがあります。
これは、IIS でのハンドラーマッピングの設定が原因である場合があります。これを解決するには、wsf ハンドラー (svc-Integrated-4.0) の後に OPTIONSVerbHandler を実行するように設定します。
-
IIS コンソールで [ ハンドラーマッピング ] を選択します (サーバーレベルまたはサイトレベルで選択します。サイトレベルで選択した場合、サイトのすべてのハンドラーが再定義され、その後サーバーレベルで行われた変更が無視されることに注意してください。また、サーバーレベルで選択した場合、OPTIONSVerb の独自の処理を必要とする他のサイトに影響が生じる可能性があります)。
-
[ アクション ] パネルで [ 順序指定された一覧の表示 ] を選択します。OPTIONSVerbHandler を見つけ、svc-Integrated-4.0 ハンドラーの下になるまで移動します。
注: OPTIONSVerbHandler を削除すると、API オブジェクト用のプリフライト OPTIONS リクエストへの応答が中止されます。
ジェネレーター: Java、
.NET、
.NET Framework
この機能は
GeneXus 18 以降のバージョンで使用可能です。
環境変数の定義
環境変数を読み取るメソッド