解决https请求(页面)下发送http请求问题
来源:互联网 发布:天津南开网络花店 编辑:程序博客网 时间:2024/05/18 04:01
一朝忽觉京梦醒,半世浮沉雨打萍。---前段时间看的一篇关于一个梦想留在北京工作的女博士和他的导师之间的流氓爱情故事,分享一下。
本文借鉴自:http://www.dewen.org/q/5678/Tomcat+https%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0http%E7%9A%84%E7%AB%AF%E5%8F%A3%E8%8E%B7%E5%8F%96%E9%97%AE%E9%A2%98+%7C+https%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0http+session%E5%A4%B1%E6%95%88%E9%97%AE%E9%A2%98
开始说正事:
问题:碰到这个问题朋友肯定已经了解了关于http和https的区别,并且也知道了在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);
- 解决https请求(页面)下发送http请求问题
- 解决https请求下发送http请求问题
- ruby发送http,https请求
- JAVA发送http、https请求
- HttpClient 发送 HTTP、HTTPS 请求
- 前端webview,页面加载,发送Ajax请求,请求失败,https,http
- 页面发送http请求方式
- 解决Nginx+Tomcat下客户端https请求跳转成http的问题
- 解决Nginx+Tomcat中https转http请求问题
- 使用URLConnction发送HTTP/HTTPS请求
- Qt 之 使用 https:// 发送 HTTP请求
- java 发送http与https请求
- Qt 之 使用 https:// 发送 HTTP请求
- java发送HTTP和HTTPS请求
- java 发送http和https请求
- 发送HTTP和HTTPS(单向验证)请求(包含POST请求)
- 解决Xcode7 使用NSURLSession发送HTTP请求时报错问题
- Jsoup发送https请求的问题
- OpenStack Cinder源码分析之六
- WINCE下I/O操作基础
- 设计模式学习—简单工厂模式
- 29-乒乓球比赛对战名单分析
- LBS定位技术之GPS(一)
- 解决https请求(页面)下发送http请求问题
- WinCE驱动调试助手V2.5
- C#string
- 内核中需要注意的一些基础问题集锦
- sublime-TEXT3安装Package
- 小强的HTML5移动开发之路(18)——HTML5地理定位
- AS3.0 String转换成数值时的判断
- WinCE驱动的动态加载
- 黑马程序员_Java基础_02