実現したいこと
Django REST Frameworkで作成したAPIエンドポイントをReact + Typescriptで作られたアプリで使用したい。
前提
Django REST Frameworkで以前にAPIエンドポイントを作成しました。
ブラウザでAPIを表示して確認できたので、APIの作成はできていると思っています。
そのAPIを使用しようと、GithubにReact + Typescriptで作成したアプリをアップロードし、デプロイ環境であるNetlifyとVercelにデプロイしました。
発生している問題・エラーメッセージ
React + Typescriptアプリのブラウザの開発ツールでエラーメッセージを見たところ、CORSポリシーによりブロックされていますと表示されました。
該当のソースコード
CORS設定の準備
1pip install django-cors-headers
Djangoのsettings,pyの一部
1INSTALLED_APPS = ( 2 ... 3 'corsheaders', 4 ... 5) 6 7 8MIDDLEWARE = [ 9 ..., 10 'corsheaders.middleware.CorsMiddleware', 11 ..., 12] 13 14 15CORS_ALLOWED_ORIGINS = [ 16 'React + TypescriptアプリのURL', 17] 18
React+Typesriptアプリのsrcのcomponents内にあるコードの一部
1 useEffect(() => { 2 fetch("APIエンドポイントのURL") 3}
試したこと
ブラウザ開発ツールのエラーメッセージからDjango REST FrameworkのCORS設定の修正が必要だと考えました。調べたところ、設定は上記のみであると思われたためURL等の誤字を確認しましたが、ミスはありませんでした。
Pythonanywhereのサポートチームに問い合わせましたが、上記の設定に関する説明のみでその他の設定はないとのことでした。
試しに、Django REST Frameworkで作成したプロジェクト内に、同プロジェクトで作成した本APIエンドポイントを使用するアプリを作成してPythonanywhereでデプロイしました。
こちらはブラウザがアクセスし続けるだけでPythonanywhereの設定である5分後にタイムアウトしました。アクセスはできていないため、ブラウザのエラーメッセージは確認できませんでした。同プロジェクト内のAPIを使用するアプリはあまり作られないと思っています。
補足情報(FW/ツールのバージョンなど)
DjangoはPythonanywhereでデプロイしています。Python3です。
自分の予想ですが、NetlifyとVercelはフリーアカウントを使っています。
そのため、URLの最後がnetlify.appとvercel.appです。
これらはあまり一般的でないため、Django側が認識できていないのではないかと少し考えています。

回答1件
あなたの回答
tips
プレビュー