上一篇
html获取网站域名
- 行业动态
- 2025-04-26
- 2
在HTML/JS中可通过
window.location.hostname
获取当前域名;服务器端如PHP可用 $_SERVER['HTTP_HOST']
,Node.js用 req.hostname
;也可通过正则匹配URL字符串提取域名
使用JavaScript的window.location
对象
HTML本身无法直接获取域名,但可通过嵌入的JavaScript实现。window.location
对象包含当前页面的URL信息,其中hostname
属性可直接获取域名(不含协议、端口、路径)。
示例代码:
<!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'] |
注意事项
- 协议与端口:
window.location.hostname
不包含协议(http
/https
)和端口(如:8080
)。 - 子域名处理:如需提取主域名(如从
sub.example.com
提取example.com
),需手动解析或使用第三方库。 - 跨域限制:在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协议'); }