登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Programming
  3. javascript
  4. 正文

JavaScript获取当前子域-日常笔记

2017-10-16

由于需要实现跨域iframe通信,要保证域一致。但是由于api网址可能有差异,所以仅取最小域。

一、子域举例

1.1 通过IP访问
域自动设置为IP,不带端口号。
例如:
http://192.168.1.3=>192.168.1.3
https://192.168.1.3:8098=>192.168.1.3
http://192.168.1.3:8087=>192.168.1.3
1.2 通过域名访问
域自动设置为Request URL的二级域名
例如:
http://www.baidu.com=>baidu.com
https://www.baidu.com=>baidu.com
https://baidu.com=>baidu.com
https://baidu.com:8392=>baidu.com
https://abc.def.baidu.com:8392=>baidu.com

二、获取子域

function getdomain()
    {
        var domain = window.document.domain;
        //判断域是不是localhost
        if(domain.toLowerCase()=="localhost")
        {
            return domain;
        }
        //判断域是不是ip
        var ipRegx=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
        if(ipRegx.test(domain))
        {
            return domain;
        }
        //肯定是域名了,忽略直接用浏览器打开文件的情况
        for(var i=0,last1=0 ,last2=0; i<domain.length; i++)
        {
            if(i>=domain.length-1)
            {
                return domain.substring(last1==0?last1:last1+1,domain.length); //若last1=0,表明域名至只有一个.符号,如果非0,则取一级域名即可。
            }
            if(domain[i]=='.')
            {
                last1=last2;
                last2=i;
            }
        }
    }

 

三、潜在bug

baidu.com.cn/baidu.org.cn等域名,获取的子域为com.cn/org.cn还未测浏览器能否通过测试

标签: 暂无
最后更新:2017-10-16

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号