前提と発生している問題
Django で REST API を外だししています。
その際、CORS対応を setting.py
に一括で記入しています。
しかしREST API の呼び出し時にCORSに引っかかるものと引っかからないものが出ており、ソースコード上の違いもよくわかりませんでした。
APIを呼ぶ側はlocalhost:3
000で起動しており、引っかかるもの引っかからないもので、変えてもいません。
エラーメッセージも以下の通りlocalhost:3000が許可されていないとなっています。
Access to XMLHttpRequest at 'http://localhost:8000/api/data' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
同じ設定状態で同じクライアントから呼んでいるのに引っかかるものと引っかからないものがあるのが一番の謎です。
何かこういった状況に陥る可能性が思い当たる方がいらっしゃれば教えていただきたく思います。
該当のソースコード
以下は setting.py になります。
Python
1INSTALLED_APPS = [ 2 'corsheaders', 3] 4 5MIDDLEWARE = [ 6 'corsheaders.middleware.CorsMiddleware', 7] 8 9CORS_ORIGIN_ALLOW_ALL = True
試したこと
CORS_ORIGIN_ALLOW_ALLではなく、WHITELISTで書いてみましたが、状況は変わりませんでした。
Python
1CORS_ORIGIN_WHITELIST = ( 2 'http://localhost:3000', 3 'http://127.0.0.1:3000', 4)
補足(2019/8/26追記)
通常のAPI呼び出しでは呼び出すことが出来ています。
一部APIのみ上記のような現象が発生することから、setting.pyの内容ではなく、その設定の適用される範囲の問題かと思っているのですが、setting.pyの設定内容が反映されない可能性はあるのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。