从 URL 中提取域名
本题旨在有效地从 URL 中提取域名。虽然提供的 Java 代码似乎运行合理,但作者询问了任何可能损害其可靠性的高级技术或潜在的边缘情况。
使用 java.net.URI 的替代实现
建议使用更简洁的 URL 解析方法,即使用 java.net.URI 类而不是 java.net.URL。后者存在已知问题,例如其有问题的 equals 方法,该方法可能会在涉及不受信任输入的场景中使代码暴露于漏洞:
public static String getDomainName(String url) throws URISyntaxException { URI uri = new URI(url); String domain = uri.getHost(); return domain.startsWith("www.") ? domain.substring(4) : domain; }
这种改进的方法应该能够有效地检索域名,同时处理涉及不正确大小写或大小写的边缘情况。 “www”前缀的变体。
需要考虑的其他边缘情况
原始代码无法考虑特定的 URL 格式:
要解决这些边缘情况,请考虑参考 RFC 3986 的附录 B,它提供了一个全面的正则表达式,用于解析 URI 引用并将它们分解为单独的组件。
以上是如何可靠地从 URL 中提取域名:替代技术和边缘情况的详细内容。更多信息请关注PHP中文网其他相关文章!