SameSite 问题求解

8 条回复
35 次浏览

我现在有个需求,将前后端不分离的项目做成前后端分离的,但是在会话管理有个问题,我不想引用 Redis 之类的组件,所以像验证码获取与验证的部分就需要存储验证码,我想用 session 来存储,但是由于前端分离了,后端 SameSite=Lax 会无法设置 set-cookie,前端获取不到 sessionid,然后验证码就无法验证,ai 让我设置 vite 代理,我设置后还是不行。

复制
export default defineConfig({
  server: {
    proxy: {
      '/api_server': {
        target: 'http://127.0.0.1:8000',
        changeOrigin: true,
        // 这样就不存在跨域问题,浏览器会自动处理 cookie
      }
    }
  }
})

前端:localhost:5173,后端 127.0.0.1:8000

前后端分离的情况下使用 session 来管理会话,就是这么个问题。

大平衡者
Admin

前后端都用 localhost 呢?前端用什么发出请求的?设置 withCredentials 了吗

前排打手
OP
Guardian

设置了,端口不一样也是跨域,我受不了了,我现在换成把 sessionid 放到响应头的自定义头里面,让前端获取后放到请求头,后端再去获取。

前排打手
OP
Guardian

@Jimmy 鱼和熊掌不可兼得,既要跨又不能完全跨,samesite 设置为 none 可以,但是我不想改,所以现在还是 lax,现在在换方案试试。

都听我说!

直接用 playwright mcp 让 AI 自己通过浏览器测试,发现问题,解决问题。

前排打手
OP
Guardian

说得好,还没了解过,现在用 codebuddy,已经没额度了,换成 trae 一直排队。

发表一个评论

R保持