2017-01-10 12 views
0

django-rest-frameworkとバックエンドを使用しているAngular 2アプリを開発しています。私は、開発サーバ(angi-cliから提供)とdjango(manage.pyからのデフォルト)のための別のものを使ってテストしています。両方のサーバーは127.0.0.1からアクセス可能ですが、異なるポートにアクセスできます。Set-CookieレスポンスヘッダがAngular 2 + django-rest-frameworkを使用していません

私の認証システムは、django-rest-frameworkが提供するCookieに基づいています。 django-rest-frameworkのビューを使用すると、すべてうまく動作します。

角度2からログインしようとすると、私はSet-Cookieヘッダーで有効な応答を受け取ります。問題は、クッキーがブラウザーで設定されないことです(chromeとfirefoxでテスト済み)。

これはCORSの問題ですか?私はジャンゴ・CORSを理解する(基本的には一般的にCORS)として、私はあなたがすべて許可すると同時に、資格証明書を許可する設定することはできません、次のパラメータ

CORS_ORIGIN_ALLOW_ALL = True 
CORS_ALLOW_CREDENTIALS = True 

答えて

0

でインストールcorsheaderアプリを持っている、これはCORSミドルウェアからです。

if conf.CORS_ORIGIN_ALLOW_ALL and not conf.CORS_ALLOW_CREDENTIALS: 
      response[ACCESS_CONTROL_ALLOW_ORIGIN] = "*" 
else: 
    response[ACCESS_CONTROL_ALLOW_ORIGIN] = origin 
    patch_vary_headers(response, ['Origin']) 

基本的には、原点を適切に設定する必要があります。両方のTruesでelseブロックに行くようにする必要があります。

あなたがここに、それについての詳細を読むことができます:MDN CORS、特にこのフラグメント:

「重要な注意:資格の要求に応答するときに、サーバーがドメインを指定する必要があり、野生のカーディングを使用することはできません上記の例がします。 Access-Control-Allow-Origin:http://foo.exampleが明示的に記述されているため、信任状のコグニザントコンテンツが呼び出し元のWebコンテンツに返されます。さらにクッキーが設定されます。失敗した場合は、使用されているAPIに応じて例外が発生します。

+0

本当にdjango-corsのバージョンによって異なります。私はこのコードを見て、私が使用しているバージョンには表示されません。私はまた、両方ともTrueに設定されており、正常に動作します。 – AdelaN

関連する問題