需求
通过DNS的解析,访问heytool.com时跳转到www.heytool.com
标准的DNS协议中并无显性URL、隐性URL类型的记录
显性URL测试
添加显性URL记录:heytool.com
-
查看DNS解析情况
dig解析上面的显性记录,发现被cname到了dnspod-free.mydnspod.net,他对应的两个IP是54.248.82.230,54.248.143.107 -
访问测试
# curl -I http://heytool.com
HTTP/1.1 301 Moved Permanently # 301重定向
Date: Tue, 27 Aug 2013 08:24:21 GMT
Cache-Control: max-age=120
Expires: Tue, 27 Aug 2013 08:26:21 GMT
Server: DNSPod URL V2.0 # DNSPod的服务器
Location: http://www.heytool.com # 跳转到www.heytool.com
Content-Length: 0
Connection: close
隐性URL测试
iframe html示例
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
/* 将根元素占满浏览器 */
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
iframe {
margin: 0 auto;
display: block;
width: 100%;
height: 100%;
border: 0;
}
</style>
<script type="text/javascript">
window.onload = function () {
var iframeEle = document.getElementsByTagName("iframe");
// iframe使用子页面的title
iframeEle.contentWindow.document.title;
}
</script>
</head>
<body>
<iframe src="https://www.baidu.com" allowfullscreen="true" allow="microphone; camera"></iframe>
</body>
</html>
显性/隐性URL原理总结
- 域名管理员显性/隐性URL解析,有些DNS服务商的显性URL记录还可以选择响应状态码(可选302/301),记录值为目标URL(http://www.heytool.com)
- dns提供商将显性/隐性URL记录用(heytool.com),在创建相应的cname记录解析到他们的服务器上(一般控制台上不显式这些对应的cname记录),并且这台服务器上配置了虚拟主机(heytool.com)
- 服务商服务器上的虚拟主机配置
- 显性URL跳转:配置302URL重写,或是301URL重写
- 隐性URL转发:站点里面的index.html面加上iframe,iframe的src值为隐性URL记录的值。在里面嵌套页面,所以不管你怎么点链接,url地址栏都不会变化.除非你的连接是打开新页面
- 显性URL的本质是,创建了cname记录指向服务商的服务器,此服务器设置了URL重写(跳转)
隐性URL的本质,创建了cname记录指向服务商的服务器,此服务器返回了一个包含iframe的html页面