メインコンテンツまでスキップ
Version: v2.4.0

CORS 対応

FRUCtoS サーバは tomcat のフィルターを利用することで CORS 対応が可能です。
FRUCtoS 構築時点では CORS 対応の設定は行われていません。

設定に際しての注意喚起

CORS 対応の設定を有効にするには FRUCtoS サーバの再起動が必要です。
CORS 対応の有効/無効は FRUCtoS サーバで保持するリソースの内容に影響を与えません。

注意

CORS フィルター設定に際して、必要以上にセキュリティ強度を下げるのはリスクを伴います。
設定内容を十分に検討しユーザの責任で行ってください。

1. tomcat の CORS フィルターについて

Apache Tomcat 9 Configuration ReferenceCORS Filter を参照してください。
設定は WEB-INF/web.xml ファイルを編集して行います。

2. FRUCtoS サーバへの CORS フィルター設定追加手順例

FRUCtoS サーバへ CORS フィルターの設定を追加する手順の例を以下に示します。
配布パッケージの fructos.war に含まれる WEB-INF/web.xml を編集します。

info

fructos.war ファイルのバックアップが必要な場合は、適宜作成するか必要な時に配布パッケージから再取得してください。

macOS での操作に基いていますが Windows 環境でも同様の操作が行える想定です。

前提として 構築手順 通りに作業し Docker 環境で FRUCtoS サーバが正常起動している事とします。
fructos_docker 配下の tomcat/webapps ディレクトリで操作を行います。

fructos_docker ディレクトリ配下(抜粋)

$WORK
├── dist
│ ├── fructos_docker
│ │ └── tomcat
│ │ └── webapps
│ │ └── fructos.war

2.1 web.xml ファイル抽出

jar コマンドで fructos.war から web.xml ファイルを抽出します。

jar xfv fructos.war WEB-INF/web.xml

画面には以下のメッセージが出力されます。

WEB-INF/web.xmlが展開されました
jar コマンド実行後の fructos_docker ディレクトリ配下(抜粋)

$WORK
├── dist
│ ├── fructos_docker
│ │ └── tomcat
│ │ └── webapps
│ │ ├── WEB-INF
│ │ │ └── web.xml
│ │ └── fructos.war

2.2 CORS フィルター追加

抽出された web.xml ファイルに CORS フィルターを追加します。

info

必要に応じて web.xml ファイルのバックアップを作成してください。

web.xml ファイルに以下のフィルター定義とフィルターマッピング定義を追加します。

 <!-- ===================== CORS Filter Definitions ====================== -->
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>https://www.apache.org</param-value>
</init-param>
</filter>

<!-- ====================== CORS Filter Mappings ======================== -->
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

2.3 web.xml ファイル更新

編集した web.xml ファイルを使用して fructos.war 内の web.xml ファイルを更新します。

jar ufv fructos.war WEB-INF/web.xml

画面には以下のメッセージが出力されます。

WEB-INF/web.xmlを追加中です(入=7865)(出=1724)(78%収縮されました)

2.4 CORS フィルター設定反映( FRUCtoS サーバ再起動 )

  1. 構築手順 『6. 停止と起動』に従い Keycloak Gateway、FRUCtoS を停止してください。
  2. 構築手順 『4.4.1. FRUCtoSサーバ』に従い FRUCtoSサーバの Dockerイメージ・コンテナを再作成してください。
  3. 構築手順 『6.4. Keycloak Gatewayの起動』に従い Keycloak Gateway を起動してください。

参考)動作確認

必要に応じて CORS フィルター設定後の動作確認を行ってください。

Postman を使った動作確認例

『2.2 CORS フィルター追加』と同様の設定を行った FRUCtoS サーバに対する動作確認の例。

リクエストヘッダーに Origin: https://www.apache.org を追加する。
レスポンスヘッダーに Access-Control-Allow-Origin: https://www.apache.org が追加される。

Postman を使った動作確認例