解决https请求下发送http请求问题

在https页面下的带有相对路径的请求都会与页面的协议保持一致。如果想在https页面下发送http的请求,如果只把链接写死成为http的绝对路径是不够的,这样会导致http的请求与总页面https的请求的session不一致。

为什么呢?原因是https的请求中服务器发回的cookie是标记为"secure"的,而http的请求时非"secure","由于在服务器端secure"的cookie不会兼容非"secure"的,所以当http的请求携带着同一jsessionid的cookie到达服务器时,服务器拒绝非"secure",进而返回的结果是一个新的非"secure"的cookie,于是两个session就不同了。

 怎么解决呢?由原因分析可知,两个session不同,更具体说是cookie的状态不同。那么办法是,在接收到第一个https请求的响应后 到 发送下面的http请求之前,将cookie去"secure"状态,但是又要保证jsessionid不变。具体操作可以新建一个cookie(新建的是非"secure"状态),然后赋予同一个jessionid,然后加入response中。


代码如下:

Cookie cookie = new Cookie("JSESSIONID", req.getSession().getId());
cookie.setPath(req.getContextPath());
resp.addCookie(cookie);


本文转载自http://blog.csdn.net/songgeabc/article/details/18192057

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值