You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django与Nuxt.js集成配置credentials:true后仍无法获取请求Cookie

问题根因及修复方案


Django侧配置修复

  1. 配置跨域参数
    首先确保安装了django-cors-headers依赖,在settings.py中添加如下配置:
INSTALLED_APPS = [
    # ... 其他原有配置
    'corsheaders',
]

MIDDLEWARE = [
    # 放在最顶部,优先加载
    'corsheaders.middleware.CorsMiddleware',
    # ... 其他原有中间件
    'django.middleware.common.CommonMiddleware',
]

# 跨域允许携带凭证
CORS_ALLOW_CREDENTIALS = True
# 填写你Nuxt服务的实际访问地址,禁止使用*通配符
CORS_ALLOWED_ORIGINS = [
    "http://localhost:3000",
    "http://127.0.0.1:3000",
]

CSRF_TRUSTED_ORIGINS = CORS_ALLOWED_ORIGINS

# 新增JWT认证配置
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),
}
  1. 修正set_cookie参数(如果你确实需要保留cookie逻辑的话)
    跨域场景下缺省参数会导致浏览器拒绝种下cookie,修改login视图中的cookie设置逻辑:
response.set_cookie(
    'username',
    username,
    max_age=7*24*3600,
    httponly=False, # 若前端不需要读取该cookie可设为True提升安全性
    samesite='Lax', # 生产环境跨域可设为None,需同时搭配secure=True
    secure=False, # 本地http开发设为False,生产https环境设为True
    path='/'
)
  1. 优化userview冗余逻辑
    你已经使用了IsAuthenticated权限类,JWT认证通过后request.user会直接返回当前登录用户,完全不需要读取cookie:
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def userview(request):
    serializers = UserSerializer(request.user)
    return Response({'user': serializers.data})

原逻辑中使用filter+many=True会返回用户数组,和Nuxt auth-next要求的单个用户结构不匹配,修正后即可正常解析用户数据。


Nuxt侧校验

确认以下配置无误即可:

  1. 你已经在axios配置中开启了credentials: true,符合要求
  2. 确认Django侧userview对应的路由路径和auth配置中endpoints.user.url的/user/完全匹配,没有拼写错误

内容的提问来源于stack exchange,提问作者Phan Quang Thang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:45:06