2016-05-27 2 views
0

Ich versuche, wenn meine Referrer String von jeder URL kommt mit dem Format https://www.google.com/ {{etwas}} zu überprüfen:Wie kann ich meine REFERER-URL mit glob validieren?

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."); 
    } 

Hier ist der 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; 
} 

Hat die Referrer-URL muss ein direkter Treffer sein oder wird es automatisch wissen, ob es von der Basis-URL kommt, https://www.google.com?

Ich nehme an, ich kann einfach .contains verwenden, anstatt sicherzustellen, dass die Zeichenfolge gleich einem regulären Ausdruck ist? Ist da etwas nicht in Ordnung?

Antwort

2

Warum nicht stattdessen .startsWith verwenden?

Versuchen

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

Auch, was auf der Erde sind, werden Sie mit createRegexFromGlob tun? passen Sie einfach die URL mit der folgenden regex

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

Java-Code:

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

.contains verwendet werden kann, aber es wird auch akzeptieren URLs wie

http://example.com/https://www.google.com 
+0

Und die Regex ist in der verstanden Schnur? – santafebound

+0

Sorry, hab dich nicht verstanden. Hast du 'startsWith' versucht? –

+0

Ja. Startswith funktioniert. Ich frage mich, ob ich nur fragen kann, ob die URL-Zeichenkette mit dem Regex-Ausdruck übereinstimmt, den Sie angegeben haben. – santafebound

Verwandte Themen