判断请求URL中是IP还是域名

来源:互联网 发布:linux临时设置环境变量 编辑:程序博客网 时间:2024/03/29 05:03

背景

服务运行在内网,与本服务交互的家伙,依靠特定的Cookie来决定某个状态。
问题就来了,Cookie的域要么基于IP要么基于域名,考虑到跨越:

  1. 如果基于IP,两个服务必须运行在同一服务器上
  2. 如果基于域名,内网需部署DNS服务器或者自己手动改hosts文件

反正两者都有些崩溃,决定两个都支持,酌情处理。

需求

  1. 当用户通过IP访问时,Cookie的Domain为IP地址
  2. 当用户通过域名访问时,Cookie的Domain为二级域名
    Eg: 访问(test1.test2.company.com时,Domain为company.com

解决方案

依据正则表达式写了段代码

 /* 正则,粗略的匹配下IP还是域名,代码能跑这的,格式什么的都合法 */ public static String PATTERN_L2DOMAIN = "\\w*\\.\\w*:"; public static String PATTERN_IP = "(\\d*\\.){3}\\d*"; public static String getCookieDomain(String url) {      /* 以IP形式访问时,返回IP */     Pattern ipPattern = Pattern.compile(PATTERN_IP);     Matcher matcher = ipPattern.matcher(url);     if (matcher.find()) {         System.out.println("[HttpUtil][getCookieDomain] match ip.");         return matcher.group();     }     /* 以域名访问时,返回二级域名 */     Pattern pattern = Pattern.compile(PATTERN_L2DOMAIN);     matcher = pattern.matcher(url);     if (matcher.find()) {         System.out.println("[HttpUtil][getCookieDomain] match domain.");         String domain =  matcher.group();         /* 裁剪一下是因为连着冒号也匹配进去了,唉~ */         return domain.substring(0, domain.length() - 1);     }     return null; }
0 0
原创粉丝点击