nginx跨域访问配置,sessionid设置失败,求教原因

Bmound 发布于 2017/01/17 16:22
阅读 1K+
收藏 0

大神大神你快来!

背景:项目采用前后分离的开发模式,前端使用Vue框架,后端web容器tomcat,开发框架springMVC+shiro权限、session管理

说明:因为在实际部署环境前后端肯定是在不同的服务起上的,打算使用nginx作为代理服务。

小弟在本地生产环境下模式这种场景,配置了nginx代理,前端localhost:8089,后端localhost:8080

nginx配置如下:

location /pdtw-inner {
    add_header 'Access-Control-Allow-Origin' 'http://localhost:8089';
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-    Requested-With,If-Modified-Since,Cache-Control,Content-Type';
    proxy_set_header Host "localhost";
    proxy_pass   http://localhost:8080/pdtw-inner;
    proxy_set_header Cookie $http_cookie; 
}

chrome浏览器!
问题现象:使用浏览器第一次访问登录地址正常登录,返回信息如下:

问题来了,通过浏览器查看cookie,没有将cookie信息保存到本地,所以导致了登录后的下一次查询数据的请求没有附带该cookie,后台就找不到对应的session,并生成新的jsessionid返回前台,且依旧不能存储到本地,每次请求都会生成新的sessionid。

自己上网找了一些资料,有些人说配置cookie_path什么的都是过,没有用!

还有一点比较奇怪,对于vue了解的大神应该知道vue的插件支持代理(公司不允许使用过这种模式),使用这种代理模式请求后台就没有问题,jsessionid和上图返回信息一样,并且存储到了浏览器本地,下次访问时就自动在header头上加上了。

为什么nginx就不行啊 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

加载中
返回顶部
顶部