私はあなたがウェブプロキシとして人生の喜びを体験することの試練と苦難について常に考えてきたことを知っています。正直なところ、誰がそうではありませんか?今日、あなたはこの目標(少なくともその一部)の実現を任されています。WebサイトXは、クエリパラメーターを介して機密情報を渡すことを要求する多数のユーザーのために、毎日多くのトラフィックを獲得し、PaaS(明らかにサービスとしてのプロキシを指します)を探しています(ユーザーは愚かです)。あなたのタスクは、リクエストを元の宛先に転送する前に、リクエストからすべての重要なクエリパラメータを削除することです。
入力
- RFC3986セクション3の URI文法に従う、整形式の絶対HTTP URL 。
- フラグメントがないと仮定できます
- 角括弧で囲まれたものがオプションを示す簡単な形式の例:
http[s]://[user:pass@]host.name.com[:port]/[?param1=value1¶m2=value2...]
- 削除するクエリパラメータのリスト。
出力
入力リストにパラメーターが定義されていない、変更されたHTTP URL。
例
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
得点
これはcode-golfなので、最短の回答(バイト単位)が優先されます。
&パラメーター間以外に表示できますか?
??を含めることもできます。また、注文は以前のように保持する必要がありますか?
&クエリパラメータの一部である場合は、次のように正しくエンコードする必要があります%26
http://foo:&foo=x@foo.com:8080/?foo=1&bar=fooRFCによって許可されています。これは、既存のソリューションの束を壊すはずです。:D(ルールは、ユーザー情報で予約されていないか、PCTエスケープまたはサブdelimsとして展開することができ、サブdelimsを有することができる&と=)