Wiem, że zawsze myślałeś o próbach i udrękach związanych z doświadczaniem radości życia jako internetowy serwer proxy. Szczerze mówiąc, kto nie? Dziś masz za zadanie zrealizować ten cel (przynajmniej jego część). Witryna X codziennie dostaje duży ruch i szuka PaaS (wyraźnie odnosi się to do serwera proxy jako usługi) ze względu na dużą liczbę użytkowników, którzy nalegają na przekazywanie poufnych informacji za pomocą parametrów zapytań (użytkownicy są głupi). Twoim zadaniem jest usunięcie wszystkich wrażliwych parametrów zapytania z żądania przed przekazaniem żądania do pierwotnego miejsca docelowego.
Wejście
- Dobrze sformułowany bezwzględny adres URL HTTP zgodny z gramatyką URI w RFC3986 sekcja 3 .
- Możesz założyć, że nie ma fragmentu
- Krótki przykład formatu, w którym cokolwiek w nawiasach kwadratowych oznacza opcjonalne:
http[s]://[user:pass@]host.name.com[:port]/[?param1=value1¶m2=value2...]
- Lista parametrów zapytania do usunięcia.
Wynik
Zmodyfikowany adres URL HTTP bez parametrów zdefiniowanych na liście wejściowej.
Przykłady
http://example.com/ [foo]
> http://example.com/
http://example.com/?foo=bar []
> http://example.com/?foo=bar
http://example.com/ []
> http://example.com/
http://example.com/?foo=1&bar=2&baz=3 [foo,baz]
> http://example.com/?bar=2
http://example.com/?foo=1&bar=2&baz=3 [foo,bar,baz]
> http://example.com/
http://example.com/?foo&bar=2&baz= [foo,baz]
> http://example.com/?bar=2
http://example.com/?abc=1&def=2&baz=foo [foo,bar]
> http://example.com/?abc=1&def=2&baz=foo
http://example.com/?foobar=baz [foo]
> http://example.com/?foobar=baz
http://foo:foo@foo.com:8080/?foo=1&bar=foo [foo]
> http://foo:foo@foo.com:8080/?bar=foo
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź (w bajtach).
&pojawić się gdziekolwiek poza parametrami?
?? Czy zamówienie powinno być również zachowane?
&jest częścią parametru zapytania, należy go poprawnie zakodować jako%26
http://foo:&foo=x@foo.com:8080/?foo=1&bar=foojest dozwolony przez RFC. To powinno złamać wiele istniejących rozwiązań. : D (Reguła jest taka, że informacja o użytkowniku może być rozwinięta jako niezarezerwowana lub ucieczka przed pct lub podpodwójki, a podpodzimie mogą mieć &i =)