在Web开发中,获取当前域名并进行一些判断操作是常见的需求,无论是为了进行跨域请求、生成URL链接,还是进行某些逻辑判断,掌握这一技能都显得尤为重要,本文将详细介绍如何使用JavaScript(JS)获取当前域名,并在此基础上进行一系列判断操作。
云服之家,国内最专业的云服务器虚拟主机域名商家信息平台
获取当前域名的基础方法
获取当前域名最基础的方法是使用window.location
对象。window.location
是一个包含当前URL信息的对象,通过它可以轻松获取当前页面的协议、主机名、端口号以及路径等信息。
// 获取当前URL let currentUrl = window.location.href; // 获取协议部分(http:// 或 https://) let protocol = window.location.protocol; // 获取主机名(包括端口号) let hostname = window.location.hostname; // 获取路径部分(/index.html) let pathname = window.location.pathname; // 获取查询参数(?param1=value1¶m2=value2) let search = window.location.search; // 获取哈希部分(#section1) let hash = window.location.hash;
构建完整的域名
我们只需要获取不带路径和参数的完整域名(即协议 + 主机名 + 端口号),可以通过以下方式实现:
function getFullDomain(url) { const a = document.createElement('a'); a.href = url; return a.protocol + '//' + a.hostname + (a.port ? ':' + a.port : ''); } let fullDomain = getFullDomain(window.location.href); console.log(fullDomain); // 输出:http://example.com:8080(如果端口是8080)
基于域名的判断操作
获取到当前域名后,我们可以进行各种判断操作,判断当前域名是否在白名单中,或者判断是否为某个子域名等,以下是一些常见的应用场景和示例代码。
判断当前域名是否在白名单中
function isWhitelisted(domain) { const whitelist = ['example.com', 'sub.example.com']; // 白名单列表 return whitelist.includes(domain); } let currentDomain = getFullDomain(window.location.href); if (isWhitelisted(currentDomain)) { console.log('当前域名在白名单中'); } else { console.log('当前域名不在白名单中'); }
判断是否为某个子域名或特定域名的一部分
function isSubdomain(domain, parentDomain) { return domain.startsWith(parentDomain + '.'); // 检查是否以指定父域名开头,并加上点号分隔符。 } let currentDomain = getFullDomain(window.location.href); if (isSubdomain(currentDomain, 'sub')) { console.log('当前域名是 sub 域的子域名'); } else { console.log('当前域名不是 sub 域的子域名'); }
判断是否为HTTPS协议访问,并做相应处理。 可以通过window.location.protocol
进行判断:
if (window.location.protocol === 'https:') { console.log('当前页面是通过HTTPS协议访问的'); } else { console.log('当前页面是通过HTTP协议访问的'); } ``` 4. 判断端口号是否为特定值: 可以通过`window.location.port`进行判断: ```javascript const defaultPort = '80'; // 默认端口号 80 对应的字符串形式 8080 也可以这样写 '8080' 8080 是实际端口号 80 的字符串形式 8080 是实际端口号 80 的字符串形式 8080 是实际端口号 80 的字符串形式 8080 是实际端口号 80 的字符串形式 8080 是实际端口号 80 的字符串形式 8080 是实际端口号 80 的字符串形式 如果需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号,请相应修改代码中的 defaultPort 值即可,如果不需要判断其他端口号