有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在Java中有效地检查给定URL(字符串)是否包含白名单域(字符串)

我需要写一个实用的方法,将采取一个网址,并检查是否给定的网址是有效的

URL可以是任何带有/不带有协议的内容,如http、https,也可以包含相对URL,如域为example,URL为“abc.com”,则其为相对URL。另外,它也可以是无效的url,并且可以包含简单的字符串

此外,我还有一个白名单URL,可以更改运行时,如youtube.comfacebook.com

如何检查给定的url是否有效在我的情况下,我正在进行的一些基本检查如下:-

 String url = "http://youtube.com";
    if(!StringUtil.isEmpty(url))
    {
        if (url.startsWith("http:") || pathToImage.startsWith("https://")) {
            // check if url is from whitlist domains

        } else {
            // do nothing, url is not internal domain.
        }
    }

现在我的问题是如何正确地从位于httphttps之后的URL中提取域名

注意:-我使用的是ApacheStringUtils,url很可能类似于https://absdsbsbhttps://anmds.txt。同时让我知道这是否是正则表达式匹配的好例子


共 (1) 个答案

  1. # 1 楼答案

    正确的方法是使用^{}

    您可以将它们视为字符串,并查找特定的模式或子字符串,但有各种“棘手”的方法来编写URL,这些方法可用于传递不应该传递的URL。(不过,如果您使用的是白名单而不是黑名单,这会使编写URL变得更加棘手。)

    无论如何,方法应该是使用URI类来解析URL字符串,然后获取并匹配protocolhost组件

    一旦你有了域名,就有点折腾你如何有效地将EME>匹配到一个白名单,但是我会考虑使用一个树集,并考虑使用它的{{CD5>}和^ {< CD6>}方法来加速域前缀匹配。

    (如果正则表达式匹配可以提供良好的性能,我会感到惊讶。)