同じ問題に関するStackoverflowの投稿をかなり調査して読んでいます。誰も私の問題を解決していません。
私の問題は、コンソールで「... '' Access-Control-Allow-Origin 'header is present on the requested resource ...」というエラーが表示されることです。
使っています:
Chromeバージョン57.0.2987.133 Firefoxバージョン52.0.2
Python 2.7 Django 1.11a1
AngularJS
MAMPを使用して、フロントエンドAngularスタッフ、およびDjangoサーバーをバックエンドスタッフに提供します。
私のDjango設定では、corsミドルウェアを含めて、ホワイトリストのアプローチとすべてをtrueに設定することの両方を試しました。
MIDDLEWARE = [
'Django.middleware.security.SecurityMiddleware',
'Django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'Django.middleware.common.CommonMiddleware',
'Django.middleware.csrf.CsrfViewMiddleware',
'Django.contrib.auth.middleware.AuthenticationMiddleware',
'Django.contrib.messages.middleware.MessageMiddleware',
'Django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_Origin_ALLOW_ALL = True
Googleでchromeまだこのエラーが表示されます:
localhost /:1 XMLHttpRequestは{my endpoint url}をロードできません。 {my endpoint url}から{my endpoint url with a}へのリダイレクトがCORSポリシーによってブロックされました: 'Access-Control-Allow-Origin'ヘッダーが要求されたリソースにありません。したがって、Origin {requesting url}はアクセスを許可されていません。
Firefoxで適切に動作しますが、Googleクロムで動作しない理由がわかりません。他の種類のブラウザは試したことがありません。どんな助けでも大歓迎です、ありがとう。
Cors-headersパッケージをインストールします
pip install Django-cors-headers
インストール済みのアプリに追加します
INSTALLED_APPS = (
...
'corsheaders',
...
)
MIDDLEWAREに追加リストの最初に追加することを忘れないでください
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'Django.middleware.common.CommonMiddleware',
...
]
アプリをインストールする前に、誰でもアクセスできるようにこの構成を配置してください
CORS_Origin_ALLOW_ALL=True
または、ヒットのリストを作成します
CORS_Origin_WHITELIST = (
'google.com',
'hostname.example.com',
'localhost:8000',
'127.0.0.1:9000'
)
最初にリクエストのURLを確認してください。vue-resourceを使用するときにこの問題が発生しました。次に、末尾またはURLに「/」がありません。
必ず127.0.0.1
NOT localhost
を使用してください。localhost
を使用すると、ブラウザがIPv6アドレスを検索するか、またはlocalhost
を設定して、127.0.0.1
で明示的に/etc/hosts
に設定します。
chrome参照。CORSToggle appをchromeにインストールするか、WebコードをnginxまたはApacheにデプロイしてからchromeを使用できます。
おそらく、ミドルウェアをどのように呼び出しているかを調べる必要があります。それらが正しい順序にない場合、このエラーがスローされる可能性があります。 'Django.middleware.security.SecurityMiddleware'
を'corsheaders.middleware.CorsMiddleware'
の下にプッシュする必要があるようです。また、コードにもCORS_ALLOW_CREDENTIALS = True
を追加する必要があるようです。
お役に立てれば。