Axios不存储Django会话Cookie

时间:2019-03-28 13:36:19

标签: django vue.js axios

我的Vue应用程序具有Django REST Framework API后端。我正在尝试为匿名用户使用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。

在拦截响应时,将发送CSRF cookie,但不包含会话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
})

在DRF API测试中,我可以看到会话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 :(得分:0)

问题是我正在URL localhost:8080上访问网站,但cookie被保存在127.0.0.1下。

将网址更改为127.0.0.1:8080可以解决问题。