#cookies #django-rest-framework #axios #next.js #cross-domain
Вопрос:
После входа пользователя в систему я возвращаю файлы cookie из Django на локальном хосте:8000 в Next.js на локальном хостинге:3000. Но я обнаружил, что файлы cookie присутствуют в заголовке ответа, но не сохраняются в хранилище файлов cookie браузера. Я попытался сохранить файлы cookie со стороны клиента, и они были сохранены, но это не сохранение файлов cookie, отправленных сервером.
В любом случае, мой вид входа в систему Django:
class MyObtainTokenPairView(TokenObtainPairView):
permission_classes = (permissions.AllowAny,)
serializer_class = MyTokenObtainPairSerializer
def post(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
access = serializer.validated_data.get("access", None)
refresh = serializer.validated_data.get("refresh", None)
response = Response()
response.set_cookie('access', access, httponly=True, samesite='Lax')
response.set_cookie('refresh', refresh, httponly=True, samesite='Lax') # add secure=True in production
response.set_cookie('cookie', 'chocolate')
return response
И мой запрос на вход от next.js на стороне клиента:
const handleSubmit = () => {
const url = 'http://127.0.0.1:8000/api/auth/login/';
const data = { "email": email, "password": password };
const headers = {'Content-Type': 'application/json'};
axios.post(url, data, Headers=headers, {withCredentials: true})
.then(Cookies.set('isLoggedIn', 'true', { secure: true }, { sameSite: 'lax' }))
.catch(err => console.log(err));
}
Здесь файлы cookie присутствуют в заголовках ответов:
Итак, как мне сохранить эти файлы cookie http или HttpOnly в браузере?