前端页面跳转session丢失问题

      最近自己在搞后端采用分布式多台服务器部署,然后前后端分离的开发方式,页面在使用window.location.href 跳转方式或者其它前端的跳转方式的时候,再向后端应用服务器请求Cookie sessionid总是获取不到,这个怎么办,仔细分析后原来是跨域的问题,前端我使用了Hbuilder开发工具,默认用它起的服务都是8020端口的,但是我向后台请求是其它端口,这就相当于我又新打开了一个页面进行服务器的请求所以没有Cookie没有追踪到sessionId。

解决思路:既然前端服务器后端的服务器不是同一个域下,我可以对外提供统一访问地址,然后通过过滤的方式把对应用服务器的请求转发到应用服务器。这里我使用了nginx服务器来解决这个问题。

1.下载Nginx Window版本并且配置(正式部署建议使用Linux版本在)

     下载地址:http://nginx.org/en/download.html

    配置路径在nginx-1.12.0\conf下

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    upstream abroad{
	ip_hash; 
	server 127.0.0.1:8089;
    }
    server {
        listen       80;
        server_name  localhost;      
	location /{
	    proxy_pass http://abroad;
	    proxy_redirect default;
	}
	location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|woff|woff2|ttf|map|json)$
	{
           root D:/web/abroad;
           expires 7d;
	}
    }
}
简单说明:    server 代表的是应用服务器地址     location是 有拦截的文件类型

2.配置ngnix前端页面文件路径

   由于我还想用Hbuilder或者是Webstorm这类的前端开发工具这个路径就指定前端项目所在路径,我就可以实时看页面效果了。

3.启动与关闭ngnix服务器

   cmd进入到ngnix所在的目录执行ngnix.exe启动服务  ngnix.exe -s stop关闭服务

4.测试sessionId还是是否丢失 

    这个时候查看sessionId是否在请求头中已经存在。 如图所示:

前端页面跳转session丢失问题_第1张图片




你可能感兴趣的:(Javascript)