同一域名下不同端口cookie共享问题

我有一个静态资源服务器(http://localhost:8080/)和一个后台接口服务器(http://localhost:3000/),登录页面(http://localhost:8080/login.h...下有一个action为http://localhost:3000/login的form,登录验证成功会设置cookie,然后重定向到http://localhost:8080/index.html

res.cookie('mycookie', data, {
    maxAge: 1000 * 60 * 60 * 24,
    domain : "localhost"
});
res.redirect("http://localhost:8080/index.html");

发现重定向后,再请求后台接口获取到的cookie为空(req.cookies.mycookie),请问应该怎么做?

阅读 12.4k
2 个回答

既然前后端分离了,就应该接受无状态这种模式。尝试从其他途径解决状态保存问题。

例如:可以在登录接口中返回用户信息,由前端进行处理。

使用nginx做反向代理,将不同端口的服务映射到统一端口,就可以实现cookie共享了

nginx配置文件范例:

server {
    listen       8080;
    server_name  example.com;

    # 将/api路径映射到3000端口
    location ~ ^/(api)/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
    
    # 静态资源直接由nginx负责
    location / {
        root       /some/path;
        index      index.html index.htm;
    }
}

之后访问 http://example.com:8080/ 为静态资源,http://example.com:8080/api/* 为接口

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题