フロントとリアエンドの分離を達成するためのDjangoフレームワークを使用するために誰がしたい、主な問題は、クロスドメインリクエストの問題を解決することで、クロスドメインリクエストは何ですか?単に要求によって開始現在のドメイン要求のドメインが矛盾に配置されたリソースに向けられています。プロトコル+ドメイン+ポート番号が同じである場合、それは同じドメインです。
クロスドメインの問題
エラーメッセージ:
ソリューション
例えば、本質的にhtmlタグのいくつかの生成元ポリシーの影響を使用せずに1.JSONP、原始的な方法で、:クロスドメインリクエストを達成するために<A>、<IMG>、<iframe>の、<スクリプト>など、しかし、この方法では、唯一のリクエストメソッドをGETサポートしています。
2.CORSは、クロスオリジンリソースの共有、新しいW3C標準、HTTPヘッダフィールドのセットが、それはサーバが発信局がどのリソースへのアクセス権を持っている宣言することができ、追加、言い換えれば、それはブラウザがCORSを宣言することができますクロスドメイン・サーバは、XML HttpRequestの要求を送信し、その顧客サービスはAjaxの相同な使用を制限することができます。Djangoフレームワークでは問題がCORSクロスドメインリクエストを使用することで解決します。
1.インストール: 1 PIP-CORS-ヘッダDjangoのインストール
2. Djangoプロジェクトのsettings.pyを修正
1 INSTALLED_APPS = [ 2 ' django.contrib.admin ' 、 3 ' django.contrib.auth ' 、 4 'のdjango.contrib.contenttypes ' 、 5 'のdjango.contrib.sessions ' 、 6 'のdjango.contrib.messages ' 、 7 「django.contrib.staticfiles 」、 8 「corsheaders 」、#これは新しいの他の項目の前に、私たちの主人公である 9 「app01 」、 10 ] 11ミドルウェア= [ 12 ' django.middleware.security.SecurityMiddleware ' 、 13 ' django.contrib.sessions.middleware.SessionMiddleware ' 、 14 ' corsheaders.middleware.CorsMiddleware '、#注意顺序、必须放在这儿 15 ' django.middleware .common.CommonMiddleware ' 16 ' django.middleware.csrf.CsrfViewMiddleware ' 17 ' django.contrib.auth.middleware.AuthenticationMiddleware ' 18 ' django.contrib.messages.middleware.MessageMiddleware ' 19 ' django.middleware.clickjacking.XFrameOptionsMiddleware ' 20 ] 21 22 23 24 CORS_ALLOW_CREDENTIALS = Trueの 25 26 CORS_ORIGIN_ALLOW_ALL = Trueの 27 28 #允许所有的请求头29 30 CORS_ALLOW_HEADERS =(' * ")
1 INSTALLED_APPS = [ 2 ... 3 'のcorsheaders ' 、 4 ... 5 ] 。6 。7 MIDDLEWARE_CLASSES = ( 8 ... 9 ' corsheaders.middleware.CorsMiddleware ' 、 10 ' django.middleware.common.CommonMiddleware '、#1 メモ順序 11 ... 12 ) 13 #クロスドメインの増加がドロップ 14 CORS_ALLOW_CREDENTIALSを= Trueの 15 CORS_ORIGIN_ALLOW_ALL =真 16 = CORS_ORIGIN_WHITELIST ( 17 ' * ' 18 ) 19 20 CORS_ALLOW_METHODS = ( 21 ' DELETE ' 、 22 ' GET ' 、 23 ' OPTIONS ' 、 24 ' PATCH ' 、 25 ' POST ' 、 26 ' PUT ' 、 27 ' VIEW ' 、 28 ) 29 30CORS_ALLOW_HEADERS = ( 31 ' のXMLHttpRequest ' 、 32 ' X_FILENAME ' 、 33 ' エンコード受け入れる' 、 34 ' 許可' 、 35 ' コンテンツタイプ' 、 36 'のDNT ' 、 37 ' 原点' 、 38 ' のユーザエージェントを' 、 39 ' X-csrftoken ' 、 40 "X-要求-で"、 41 ' プラグマ' 、 42)
その他のソリューション
1 Ajaxは、JSONデータ、クロスドメインの制限を取得使用している場合。ただし、Webページのスクリプトファイルの呼び出しjsのスクリプトは、クロスドメインには影響を与えないShique、JSONPがクロスドメインの伝送を実現するためにこれを使用することです。したがって、我々は、Ajax、JSONの代わりにJSONP形式(対応するAPIもJSONPをサポートする必要がある)からデータ型を呼び出す必要があります。 2 JSONPはGETリクエストを使用することができます。
2.responseミドルウェアAPIはやviews.pyで提供されます
3.ミドルウェアソリューション
次のコードを記述しているアプリでファイルを作成します
次に、settings.pyでカスタムミドルウェアを登録します。