爱学习的吕 2024-06-29 18:25 采纳率: 50%
浏览 6

VUE3 + Django 接口请求每次都产生新的session_id,应该如何解决?

在使用VUE3 + Django做登录验证时,验证码始终显示过期。后来排查发现,每次接口调用都会产生新的session_id。在网上搜索,很多说是跨域问题导致的。我用的django-cors-headers库解决跨域问题,也配置了允许客户端携带cookie,vue中也配置了携带cookie,但问题始终没有解决。
这是我的Django项目中setting的跨域相关配置:

img

--

img

在vue3的axios接口定义中也配置了 withCredentials: true,如下图

img

两次接口的调用情况如下,每次的sessionid都不同:

img

img

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-06-29 18:48
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    一个可能的原因是没有设置跨域请求的凭据,解决方法是在 Django 的跨域配置中设置 `CORS_ALLOW_CREDENTIALS` 为 `True`。 在 Django 项目的 settings.py 中,找到以下代码:
    CORS_ALLOW_CREDENTIALS = False
    

    修改为:

    CORS_ALLOW_CREDENTIALS = True
    

    然后重新启动 Django 项目。 这样做的目的是告诉浏览器在跨域请求中携带凭据(session ID)。 案例:

    # settings.py
    CORS_ALLOW_CREDENTIALS = True
    

    代码示例:

    // Vue 中的 axios 请求
    axios.post('http://example.com/api/login/', {
      // 请求参数
    }, {
      withCredentials: true
    })
    .then(response => {
      // 处理响应
    })
    .catch(error => {
      // 处理错误
    });
    

    这样修改后,每次请求都会带上正确的 session ID,验证码显示过期的问题应该会解决。

    评论

报告相同问题?

问题事件

  • 修改了问题 6月29日
  • 创建了问题 6月29日

悬赏问题

  • ¥15 报酬10000,做一个简单的换汇网站
  • ¥15 关于#vue.js#的问题:word excel和ppt预览问题语言-javascript)
  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢