Аксиос не хранит сессионный cookie Django - PullRequest
0 голосов
/ 28 марта 2019

У меня есть бэкэнд API Django REST Framework для моего приложения Vue.Я пытаюсь использовать сеансы Django для анонимных пользователей, но либо Django не отправляет, либо Axios не может прочитать cookie сеанса.

Создается новый сеанс путем проверки Session.objects.all().count()

Я пытаюсь сохранить данные корзины, используя JWTAuthentication для аутентифицированных пользователей и SessionAuthentication для анонимных пользователей.

# settings.py

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = (
    'localhost:8080',
    '127.0.0.1:8080',
)

SESSION_COOKIE_HTTPONLY = False

Я пытался переключить SESSION_COOKIE_HTTPONLY в settings.py, но все еще не могусм. файл cookie.

При перехвате ответа файл cookie CSRF отправляется, но файл cookie сеанса не включается.

import axios from 'axios'
import Cookie from 'js-cookie'

axios.defaults.xsrfCookieName = 'csrftoken'
axios.defaults.xsrfHeaderName = 'X-CSRFToken'
axios.defaults.withCredentials = true
axios.interceptors.response.use(response => {
    const sessionCookie = Cookie.get()
    console.log('Cookie', sessionCookie)
    return response
})

В моих тестах API DRF я вижу, что файл cookie сеансав ответ.

Set-Cookie: sessionid=zgndujlppk4rnn6gymgg1czhv1u0rqfc; expires=Thu, 11 Apr 2019 11:27:32 GMT; HttpOnly; Max-Age=1209600; Path=/; SameSite=Lax

class Test(APITestCase):
    def test_get(self):
        response = self.client.get('/store/1/')
        print(response.cookies['sessionid']

1 Ответ

0 голосов
/ 28 марта 2019

Проблема заключалась в том, что я посещал сайт по URL localhost:8080, но файл cookie сохранялся под 127.0.0.1.

Изменение URL-адреса на 127.0.0.1:8080 решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...