当前位置:首页 > 行业动态 > 正文

html获取网站域名

在HTML/JS中可通过 window.location.hostname获取当前域名;服务器端如PHP可用 $_SERVER['HTTP_HOST'],Node.js用 req.hostname;也可通过正则匹配URL字符串提取域名

使用JavaScript的window.location对象

HTML本身无法直接获取域名,但可通过嵌入的JavaScript实现。window.location对象包含当前页面的URL信息,其中hostname属性可直接获取域名(不含协议、端口、路径)。

示例代码:

html获取网站域名  第1张

<!DOCTYPE html>
<html>
<head>获取域名示例</title>
</head>
<body>
  <script>
    // 直接输出完整域名(如:www.example.com)
    console.log(window.location.hostname);
    // 去除子域名,仅保留主域名(如:example.com)
    function getMainDomain(hostname) {
      const parts = hostname.split('.');
      return parts.slice(-2).join('.'); // 取最后两部分
    }
    console.log(getMainDomain(window.location.hostname));
  </script>
</body>
</html>

通过服务器端语言获取(以Node.js为例)

若需在服务器端获取域名(如处理HTTP请求时),可通过请求头中的Host字段获取。

语言/框架 获取方式 示例代码(Node.js)
Node.js req.headers.host const domain = req.headers.host;
PHP $_SERVER['HTTP_HOST'] $domain = $_SERVER['HTTP_HOST'];
Python request.headers['Host'] domain = request.headers['Host']

注意事项

  1. 协议与端口window.location.hostname不包含协议(http/https)和端口(如:8080)。
  2. 子域名处理:如需提取主域名(如从sub.example.com提取example.com),需手动解析或使用第三方库。
  3. 跨域限制:在iframe中获取父页面域名时,可能因浏览器安全策略受限。

相关问题与解答

问题1:如何区分主域名和子域名?

解答
主域名是域名的最高层级(如example.com),子域名是主域名前的前缀(如sub.example.com),可通过以下方法提取主域名:

  • JavaScript:分割hostname字符串,取最后两部分(如example.com)。
  • 正则表达式:匹配分隔的最后两段(如/([^.]+).([^.]+)$/)。

问题2:如何判断当前页面是否为HTTPS协议?

解答
使用window.location.protocol属性,检查其值是否为https:

if (window.location.protocol === 'https:') {
  console.log('当前为HTTPS协议');
} else {
  console.log('当前为HTTP协议');
}
0