spring cloud ajax,SPRING CLOUD AJAX COOKIES和SESSION问题

1、HTML页面用Ajax访问微服务,身份验证不能使用session,微服务框架本身就是多个WEB APP,所以不能自动同步SESSION,要同步必须要有第三方解决方案;

AJAX可以使用COOKIES,前提是不能跨域;

本地开发时,用localhost:8081,localhost:8082这样会被识别成跨域,通常WEB静态页面会微服务会分开,所以这样没办法用COOKIES;

解决办法:在zuul中添加一个映射到web服务:

web:

path: /web/**

url: http://localhost:8090/

然后在web页面中对微服务的访问也是用localhost:8080,对web页面也是用localhost:8080来访问,这样在WEB页面中,2个都是同一个域名,微服务就可以取到cookies

添加cookies时,属性必须完整:

Cookie ck = new Cookie("ssid",admin.getSsid());

ck.setDomain("localhost");

ck.setPath("/");

ck.setMaxAge(10000000);

response.addCookie(ck);

否则无法保存成功

2、AJAX 请求中的COOKIES和HEADER,是客户端发送的数据,在ZUUL转发中会传给其它的微服务,而SESSION不同,SESSION是在服务器端建立的,在ZUUL转发请求时,是不会带到下一个微服务的;

在ZUUL的网关中,可以对HEADER和COOKIES的值进行校验,检查是否登录,但是在微服务中,还要进行一次数据读取才能取到用户ID,在ZUUL中放入SESSION是无效的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值