質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

2167閲覧

[Django, Nextjs] set-cookie で値が設定されているにもかかわらずブラウザに設定されない

matsuo_basho

総合スコア88

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2022/01/10 12:11

いつも大変お世話になっております。

表題について質問です。
現在以下の環境下でログイン機能を実装しております。

環境

・Nextjs
・Django==4.0.1
・django-allauth==0.47.0
・dj-rest-auth==2.2.1
・django-cors-headers==3.10.1

REST APIです。
Signup は実装できました。

ただ、Loginした後にaccess_tokenなどは取得できたものの、
cookieに保存することができません。
response header は以下のようになっています。

Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: http://localhost:3000 Allow: POST, OPTIONS Content-Length: 715 Content-Type: application/json Cross-Origin-Opener-Policy: same-origin Date: Mon, 10 Jan 2022 11:46:56 GMT Referrer-Policy: same-origin Server: WSGIServer/0.2 CPython/3.9.7 Set-Cookie: jwt-auth=〇〇; expires=Mon, 10 Jan 2022 12:46:56 GMT; HttpOnly; Max-Age=3600; Path=/; SameSite=None; Secure Set-Cookie: csrftoken=〇〇; expires=Mon, 09 Jan 2023 11:46:56 GMT; Max-Age=31449600; Path=/; SameSite=None; Secure Set-Cookie: sessionid=〇〇; expires=Mon, 24 Jan 2022 11:46:56 GMT; HttpOnly; Max-Age=1209600; Path=/; SameSite=None; Secure Vary: Accept, Cookie, Origin X-Content-Type-Options: nosniff X-Frame-Options: DENY

なぜ、保存ができないのかわかりません。
助けてもらえると嬉しいです。

settings.py / Django

python

1INSTALLED_APPS = [ 2 # … 3 'corsheaders', 4 # … 5] 6 7MIDDLEWARE = [ 8 # … 9 'corsheaders.middleware.CorsMiddleware', 10 # … 11] 12 13# *---------------------------* 14# CORS 15# *---------------------------* 16CORS_ALLOWED_ORIGINS = [ 17 'http://127.0.0.1:3000', 18 'http://localhost:3000', 19] 20CORS_ORIGIN_WHITELIST = ( 21 'localhost:3000/', 22 'localhost:3000', 23 '127.0.0.1:3000/', 24 '127.0.0.1:3000', 25) 26CORS_ORIGIN_ALLOW_ALL = False 27CORS_ALLOW_CREDENTIALS = True 28 29# *---------------------------* 30# dj rest auth 31# *---------------------------* 32REST_FRAMEWORK = { 33 34 # … 35 36 'DEFAULT_AUTHENTICATION_CLASSES': ( 37 "dj_rest_auth.utils.JWTCookieAuthentication", 38 ), 39 40} 41 42 43REST_USE_JWT = True 44JWT_AUTH_COOKIE = 'jwt-auth' 45JWT_AUTH_SECURE = True 46JWT_AUTH_SAMESITE = 'None' 47SESSION_COOKIE_SAMESITE = 'None' 48SESSION_COOKIE_SECURE = True 49CSRF_COOKIE_SAMESITE = 'None' 50CSRF_COOKIE_SECURE = True 51 52SIMPLE_JWT = { 53 54 'USER_ID_FIELD' : 'uuid', 55 'AUTH_HEADER_TYPES' : ('JWT',), 56 'ACCESS_TOKEN_LIFETIME': timedelta( minutes = 60 ), 57 # 'ROTATE_REFRESH_TOKENS': True, 58 59} 60 61

login.js / Next.js

javascript

1const res = await axios.post("http://127.0.0.1:8000/api/auth/login/", 2 data, {withCredentials: true}) 3 4 console.log(res.data);

ありがとうございます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問