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

本文探讨了在HTML页面通过Ajax访问微服务时,由于跨域限制导致的身份验证问题。解决方案是在Zuul网关中添加映射,使Web页面和微服务在同一域名下,从而允许Cookies进行身份验证。同时,指出Cookies可以在Zuul中传递,但SESSION不会。建议在Zuul中进行登录校验,并避免在微服务中直接依赖SESSION。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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是无效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值