Apache レスポンスヘッダ追加

CORSの設定をする場合、レスポンスヘッダにAccess-Control-Allow-Originヘッダーを設定したい場合があります。

アプリケーションでヘッダーを設定することも可能ですが、WEBサーバの処理でヘッダーを設定する事ができます。
今回はWEBサーバにレスポンスヘッダーを設定します。

今回の環境は以下になります。 Amazon Linux2 docker コンテナにて Apache2.4 を使用します。

モジュールの確認

レスポンスヘッダーの操作には mod_headers.so モジュールが必要です。
モジュールが存在し設定ファイルに読み込まれていることを確認しましょう。

・コマンド

grep -r mod_headers.so /etc/httpd/conf.modules.d

・結果

/etc/httpd/conf.modules.d/00-base.conf:LoadModule headers_module modules/mod_headers.so

Apacheが読み込むモジュールについては以下を参考にして下さい。

レスポンスヘッダーの設定

設定の変更

Apacheの設定ファイルに以下を追記します。
今回は Access-Control-Allow-Origin ヘッダーを追加してみました。

Header set Access-Control-Allow-Origin "*"

Apacheの設定読み込み

設定ファイルを変更しただけではApacheは設定を読み込んでくれません。Apacheを再起動すると変更した設定を読み込んでくれます。
ゆえに、Apacheを再起動します。

systemctl restart httpd

動作確認

動作確認用ファイルの作成

結果が確認しやすくなるように、確認用ファイルを作成します。

以下のコマンドを実行し、確認の為にブラウザに表示させるファイルを作成します。
内容は “test” と言う文字としますが内容はなんでも良いです。

・コマンド

vi /var/www/html/index.html

確認

以下のコマンドを実行し動作を確認しました。

・コマンド

curl --dump-header - http://localhost

・結果
Access-Control-Allow-Origin ヘッダーが追加されていることが分かります。

HTTP/1.1 200 OK
Date: Sun, 02 Jan 2022 01:27:41 GMT
Server: Apache/2.4.51 ()
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Sun, 02 Jan 2022 01:25:08 GMT
ETag: "5-5d48f4647f939"
Accept-Ranges: bytes
Content-Length: 5
Access-Control-Allow-Origin: *
Content-Type: text/html; charset=UTF-8

test

最後に

Apacheに設定する場合、全てのHTTP通信に対してヘッダーが適用されます。Locationディレクティブを使用して特定のドメインに対してレスポンスを追加することや.htaccess を使用すること検討しても良いかもしれません。アプリケーションで設定することも可能です。
どちらがいいのかはケースバーイケースなのでプロジェクト内で話し合って決めましょう。

© DeNnie.Lab All Rights Reserved.