👻
Django REST frameworkでCORSの設定を行う方法
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に記載されています
Discussion