cloudflareで静的pageを配信するときのCORSの設定

目次

まとめ

cloudflareのworkers & pagesでCORSを設定するには、レスポンス ヘッダー変換ルールを使うと簡単にできる。

最初に

このblog(https://horiuchi.page、以降blog)は、Astroで作成して、cloudflareのworkers & pagesを使って配信している静的サイトである。私の会社のサイト(https://grikk.co.jp、以降サイト)では、blogが生成した静的なrss.xmlをjavascriptで処理して、blogの更新情報を掲載している。

rss.xmlをサイト側のjavascriptで処理するためには、blogで、CORSの設定をする必要がある。

Access-Control-Allow-Origin: * 

か、

Access-Control-Allow-Origin: https://grikk.co.jp

の設定が必要なる。

先述の通り、サーバーは、cloudflareのworkers & pagesを使っているので、cloudflareのheaderに、CORSを設定する必要がある。

CORSの設定の方法が色々があるが、このblogの場合は、ルール > レスポンスヘッダー変換ルールを使って、リクエストのURIパスを、オペレータをワイルドカードで、/*.xmlに設定して、headerにAccess-Control-Allow-Origin*を設定している。

これで、xmlファイルにアクセスした場合には、Access-Control-Allow-Originを設定したレスポンスを返すようになり、サイト側のjavascriptで、blog側のrssファイルを処理できるようになる。

「ルール」への行き方

クイック検索

ルール設定ページへの遷移方法がいまいち分かりにくい。左側カラムの「クイック検索」に「ルール」といれて、出てきた「ルール」をクリックすると目的のページに遷移できる。

クイック検索

レスポンスヘッダー変換ルールの表示

概要で、「すべてのルールをタイプを表示」を選択して、「レスポンスヘッダー変換ルール」を選択すると、レスポンスヘッダー変換ルールの領域だけが表示される。

レスポンスヘッダー変換ルール

設定

このblogでは、次の画像のように設定を行った。 設定

おまけ _headersファイル

_headersファイルを設置して、必要なことを記載しても、レスポンスヘッダーの設定は出来る。Astroで、_headersファイルを設置する場合には、publicディレクトリに_headersファイルを作成して、必要事項を記入すれば、buildしてcloudflareにdeployした時に、有効になるようだ。

xmlファイルにだけ、Access-Control-Allow-Originを設定するには、恐らく次のように書けばよいのだと思われる。

/*.xml
  Access-Control-Allow-Origin: *