django - Axios 不存储 Django 会话 cookie
问题描述
我的 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']
解决方案
问题是我正在通过 URL 访问该站点,localhost:8080
但 cookie 保存在127.0.0.1
.
更改 URL 以127.0.0.1:8080
解决问题。
推荐阅读
- c - 卡在二维数组上,将指针插入文件中的字符串
- php - 如何将这些类型突出的代码示例添加到我的 WordPress 博客 读者可以复制粘贴?
- r - 在 RStudio 上使用 cloudml 部署 Keras 模型失败
- selenium - 无法使用 Browsermob 代理执行 http 基本身份验证
- java - 由于图形更改,JavaFX 错误对话框未显示在可运行的 jar 文件中
- java - 存储库模式 - 复合对象的 Java 示例
- umbraco - 前端页面网址
- ios - CollectionView collectionViewLayout 在第二次重新加载数据中工作
- laravel - 如何在多态关系中排除急切加载的查询?
- javascript - 新反应,页面/html没有出现