👻

Django REST frameworkでCORSの設定を行う方法

2024/09/28に公開

CORSを簡単に説明

CORSを簡単に説明すると,「どこからならアクセスしても良いか」を設定するものです.

今回使用するもの

django-cors-headerというパッケージを使用します.
このパッケージはDRFの公式ドキュメントでも言及されているものです.

Djangoへ導入する

1. django-cors-headerをインストール

python -m pip install django-cors-headers

でdjango-cors-headerをインストールします

2. Djangoのsettings.pyのINSTALLED_APPSに追記

INSTALLED_APPS = [
    ...,
    "corsheaders",
    ...,
]

3. Djangoのsettings.pyのMIDDLEWAREに追記

MIDDLEWARE = [
    ...,
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.common.CommonMiddleware",
    ...,
]

ミドルウェアとして記載する位置はできるだけ上の方が良いです.
レスポンスの生成に関わるものより上に記載することで,効果を発揮できます.
例えば,

  • DjangoのCommonMiddleware
  • WhitenoiseのWhiteNoiseMiddleware

より上に書く必要があります.

4. Djangoのsettings.pyにCORS_ALLOWED_ORIGINSを追加

CORS_ALLOWED_ORIGINS = [
    "https://example.com",
    "https://sub.example.com",
    "http://localhost:8080",
    "http://127.0.0.1:9000",
]

ここに追加されたオリジンからの接続は許可されます.

その他

その他にも

  • REGEXで許可のリスト作成する
  • 特定のURLに対してのみ許可する

ということができます.
詳しくはGitHubのREADMEに記載されています

参考

DRFのcorsについてのページ
django-cors-headerのGitHub

GitHubで編集を提案

Discussion