So che hai sempre pensato alle prove e alle tribolazioni di sperimentare le gioie della vita come proxy web. Onestamente, chi non l'ha fatto? Oggi hai il compito di realizzare questo obiettivo (almeno una parte di esso). Il sito Web X riceve molto traffico ogni giorno e sta cercando un PaaS (chiaramente questo si riferisce al proxy come servizio) a causa del gran numero di utenti che insistono sul passaggio di informazioni sensibili tramite parametri di query (gli utenti sono sciocchi). La tua attività è rimuovere tutti i parametri di query sensibili dalla richiesta prima di inoltrare la richiesta alla sua destinazione originale.
Ingresso
- Un URL HTTP assoluto ben formato che segue la grammatica URI nella sezione 3 di RFC3986 .
- Puoi presumere che non ci siano frammenti
- Breve esempio di formato in cui qualsiasi cosa tra parentesi quadre indica facoltativo:
http[s]://[user:pass@]host.name.com[:port]/[?param1=value1¶m2=value2...]
- Un elenco di parametri di query da rimuovere.
Produzione
L'URL HTTP modificato senza i parametri definiti nell'elenco di input.
Esempi
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
punteggio
Questo è code-golf , quindi vince la risposta più breve (in byte).
&apparire in un luogo diverso da quello tra i parametri?
?? Inoltre, l'ordine dovrebbe essere mantenuto come prima?
&fa parte di un parametro di query, deve essere correttamente urlencodificato come%26
http://foo:&foo=x@foo.com:8080/?foo=1&bar=fooè consentito dalla RFC. Questo dovrebbe spezzare un sacco di soluzioni esistenti. : D (La regola è userinfo può essere espansa come senza prenotazione o pct-escape o sub-delim, e i sub-delim possono avere &e =)