zoukankan      html  css  js  c++  java
  • http 切换成 https

    public class HttpsUtil {
    
        private static final String HTTPS = "https://";
    
        private static final String HTTP = "http://";
    
        /**
         * https 切换 (不包含scheme,http://)
         * @param request
         * @param url
         * @return
         */
        public static String httpsSwitch(HttpServletRequest request, String url, String httpsSwitch, String appServer){
            if(StringUtils.isBlank(url)){
                return url;
            }
            if ("0".equals(httpsSwitch)) {
                return url;
            }
            String newUrl = "";
            String host = request.getHeader("host");
            if (StringUtils.isBlank(host)) {
                host = appServer.replace("http://","");
            }
            host = host.replace(":80", "");
            newUrl = HTTPS + host + request.getContextPath() + url;
            return newUrl;
        }
    
        /**
         * https 切换(包含scheme,http://),url含有端口不替换
         * @param url
         * @return
         */
        public static String httpsSwitch(String url, String httpsSwitch){
            if(StringUtils.isBlank(url)){
                return url;
            }
            if ("0".equals(httpsSwitch)) {
                return url;
            }
            String newUrl = "";
            List<String> newUrlList = new ArrayList<>();
            if (url.contains("http://")) {
                replaceHttp(url, newUrl, newUrlList);
                if (!CollectionUtils.isEmpty(newUrlList)) {
                    newUrl = newUrlList.get(0);
                }
            } else {
                newUrl = url;
            }
            return newUrl;
        }
    
        /**
         * 替换http
         * @param url
         * @param newUrl
         * @param newUrlList
         * @return
         */
        private static void replaceHttp(String url, String newUrl, List<String> newUrlList) {
            String scheme = "";
            String context = "";
            String[] array = url.split("://", 2);
            if (array.length > 0) {
                scheme = array[0];
                context = array[1];
            }
    
            // 是否含有端口号
            boolean containsPort = containsPort(context);
            // 不含端口号才替换
            if (!containsPort) {
                scheme = scheme.replaceFirst("http", HTTPS);
            } else {
                scheme = HTTP;
            }
            newUrl = newUrl + scheme;
            // 后面url是否含有://
            boolean contains = context.contains("://");
            if (contains) {
                replaceHttp(context, newUrl, newUrlList);
            } else {
                newUrl = newUrl + context;
                newUrlList.add(newUrl);
            }
        }
    
        /**
         * 是否含有端口号
         * @param url
         * @return
         */
        private static boolean containsPort(String url) {
            if (StringUtils.isNotBlank(url)) {
                int firstIndex = url.indexOf("/");
                if (firstIndex != -1) {
                    String remoteAddr = url.substring(0, firstIndex);
                    if (remoteAddr.contains(":")) {
                        return true;
                    }
                } else {
                    if (url.contains(":")) {
                        return true;
                    }
                }
            }
            return false;
        }
    
    }
    随笔看心情
  • 相关阅读:
    Laravel学习之旅(一)
    telnet模拟邮件发送
    学习CodeIgniter框架之旅(二)继承自定义类
    学习CodeIgniter框架之旅(一)自定义模板目录
    MySQL主从复制实现
    coreseek增量索引
    锁(MySQL篇)—之MyISAM表锁

    php文件锁
    进程与线程
  • 原文地址:https://www.cnblogs.com/stromgao/p/13408540.html
Copyright © 2011-2022 走看看