DRFのsession authenticationで保護されたAPIエンドポイントにアクセスしようとしています。これは、このように、私はDjango docs次行ったリクエストヘッダにCSRFのクッキーを渡す必要があります。セッション認証でDjango Rest FrameworkへのHTTPリクエストを作成するにはどうすればよいですか?
import * as Cookies from "js-cookie";
var csrftoken = Cookies.get('csrftoken');
fetch('/api/myendpoint', { headers: { 'X-CSRFToken': csrftoken }})
.then(response => ...)
私はこのように私のsettings.pyでセッション認証をオンにしている:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
)
}
Djangoのログインと認証は、通常のページでは正しく機能していますが、API呼び出しでは正しく機能していません。私はいつも応答Authentication credentials were not provided
で403エラーが発生します。 Chromeのネットワークパネルでリクエストを調べると、X-CSRFTokenヘッダーの値が現在のcsrftoken Cookieの値に正しく設定されていることを確認しました。