CORS 対応
FRUCtoS サーバは tomcat のフィルターを利用することで CORS 対応が可能です。
FRUCtoS 構築時点では CORS 対応の設定は行われていません。
設定に際しての注意喚起
CORS 対応の設定を有効にするには FRUCtoS サーバの再起動が必要です。
CORS 対応の有効/無効は FRUCtoS サーバで保持するリソースの内容に影響を与えません。
注意
CORS フィルター設定に際して、必要以上にセキュリティ強度を下げるのはリスクを伴います。
設定内容を十分に検討しユーザの責任で行ってください。
1. tomcat の CORS フィルターについて
Apache Tomcat 9 Configuration Reference の
CORS 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 サーバ再起動 )
- 構築手順 『6. 停止と起動』に従い Keycloak Gateway、FRUCtoS を停止してください。
- 構築手順 『4.4.1. FRUCtoSサーバ』に従い FRUCtoSサーバの Dockerイメージ・コンテナを再作成してください。
- 構築手順 『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
が追加される。