如何使用glob验证我的REFERER URL?

时间:2016-05-27 09:56:59

标签: java regex referrer

我试图检查我的推荐人字符串是否来自任何格式为https://www.google.com/ {{anything}}的网址:

    String referrer = req.getHeader("REFERER");

    if (!(referrer.equals("https://www.google.com")) + createRegexFromGlob("*")) {
        System.out.println("The referrer is valid.");
    } else {
        System.out.println("The referrer is not valid.");
    }

这是glob:

public static String createRegexFromGlob(String glob)
{
    String out = "^";
    for(int i = 0; i < glob.length(); ++i)
    {
        final char c = glob.charAt(i);
        switch(c)
        {
        case '*': out += ".*"; break;
        case '?': out += '.'; break;
        case '.': out += "\\."; break;
        case '\\': out += "\\\\"; break;
        default: out += c;
        }
    }
    out += '$';
    return out;
}

引荐来源网址是否必须直接命中,还是会自动知道它是否来自基本网址https://www.google.com

我想我可以使用.contains而不是确保字符串等于某个加上正则表达式?这有什么不对吗?

1 个答案:

答案 0 :(得分:2)

为什么不使用.startsWith呢?

尝试

if (referrer.startsWith("https://www.google.com"))  

另外,你在createRegexFromGlob做了什么?只需将URL与以下正则表达式匹配

即可
^https:\/\/www\.google\.com.*$  

Java代码:

String pattern = "^https:\\/\\/www\\.google\\.com.*$";
if(referrer.matches(pattern))
可以使用

.contains,但它也会接受

等网址
http://example.com/https://www.google.com