1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > HTTPS重定向到HTTP

HTTPS重定向到HTTP

时间:2023-09-25 14:47:10

相关推荐

HTTPS重定向到HTTP

一.场景:

在企业内网应用,以及一些安全要求不高的网站会有一些https转http的需求,例如只是登陆https协议,其他请求都是走http协议,走http协议不再需要重新登陆一次。

二.解决方案

Cookie时效:

当cookie是secure的情况下,当服务器从https协议重定向到http协议后,这样的cookie就不会随请求发送到服务器。当cookie不是secure的情况下,当服务器从http协议重定向到https协议后,这样的cookie就不会随请求发送到服务器。

所以解决的方法就是在https认证后,除了构造一个secure的cookie(包含session id信息),同时构造一个非secure的cookie(包含session id信息),这样页面跳转后就一致保持session有效了,从而达到https重定向到http后不需要登陆的效果。

图中没有详细描述web容器的跳转,仅仅想描述协议转换的实现过程。

主要点说明:

重定向跳转在页面中实现,而不在Authenticator实现,也不在Filter实现,因为Response已经commit。

Filter实现增加非Secure cookie的逻辑,代码:

import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class HttpsCookieFilter implements Filter {@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {final HttpServletRequest httpRequest = (HttpServletRequest) request;final HttpServletResponse httpResponse = (HttpServletResponse) response;final HttpSession session = httpRequest.getSession(false);// servlet3if (session != null) {System.out.println("HttpsCookieFilter set session cookie:"+ session.getId());final Cookie cookie = new Cookie("JSESSIONID",session.getId());cookie.setMaxAge(-1);//no storecookie.setSecure(false);cookie.setPath(httpRequest.getContextPath());cookie.setHttpOnly(true);httpResponse.addCookie(cookie);}//servlet2//httpResponse.addHeader(//"Set-Cookie",//"JSESSIONID=" + session.getId() + "; Path="//+ httpRequest.getContextPath() + "; HttpOnly");chain.doFilter(request, response);}@Overridepublic void init(FilterConfig arg0) throws ServletException {}}

三.其他

在/blog//02/seven_myths_about_https.html

有提到没有必要从https重定向到http的一些原因。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。