本地启动多个vue项目数据共享的问题?

本地启动了两个工程,分别是:

http://localhost:8080/#/
http://localhost:8081/#/

我打开8080,在控制台输入
localStorage.setItem('test', 1)
然后打开8081去看localStorage,因为跨域了,所有不会有刚刚set进去的test1。

然后我在8080又试

document.cookie="test1=2"

对浏览器来说,cookie是区分域,不区分端口的,所以8081也有test1=2

但是当我部署之后,Nginx是这么配置的,在同一端口下不同路径

listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        
        location ^~ /open1/ {
            alias   html/dist/;
            index  index.html index.htm;
        }
        location ^~ /open2/ {
            alias   html/dist2/;
            index  index.html index.htm;
        }

我访问部署之后的地址

http://localhost/open1/#/
http://localhost/open2/#/

因为是同一端口,所以在open1下输入

localStorage.setItem('tet', 1)

open2也可以读取

但是当我输入

document.cookie="test1=2"

8082就无法读取了,应该path不同了
image.png

本地启动多个工程只有cookie是可以共享,部署后同一端口只有localStorage是可以共享的,怎么能本地跟部署之后都一套代码都能共享数据呢。

现在的做法很简单,就是判断是本地就用cookie,线上就用localStorage,请问还有别的方案吗?

阅读 2.7k
2 个回答

考虑过本地nginx做反向代理嘛。

具体操作:

  1. 本地安装nginx 这个找教程应该问题不大
  2. 配置hosts 将一个测试域名写入 配置如下

    127.0.0.1 xxx.com
  3. 配置nginx,注意重启

    server {
     listen     80;
     server_name xxx.com;                 # hosts 配置的域名
    
     location /serve1 {
         proxy_pass http://localhost:8081;    # 服务器地址1
     }
    
     location /serve2 {
         proxy_pass http://localhost:8082;    # 服务器地址2
     }
    }
    
  4. 通过浏览器访问 xxx.com 即可达到目的 根据不同的 /serveName进行切换。

您设置cookie的时候如果可以让整个网站都可以访问cookie不可以嘛?现在不是限制在/open1了吗,设置path为/呢?

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