Her zaman hayatın keyiflerini bir web vekili olarak deneyimlemenin denemelerini ve sıkıntılarını düşündüğünüzü biliyorum. Dürüst olmak gerekirse, kim yapmadı? Bugün bu hedefi (en azından bir kısmını) gerçekleştirmekle görevlendirildiniz. Web sitesi X, günlük olarak çok fazla trafik alıyor ve hassas bilgileri sorgu parametreleri aracılığıyla iletmekte ısrar eden çok sayıda kullanıcı (kullanıcılar aptalca) nedeniyle bir PaaS (açıkça bu, Hizmet olarak Proxy'yi ifade ediyor) arıyor. Göreviniz, isteği orijinal hedefine yönlendirmeden önce tüm hassas sorgu parametrelerini istekten kaldırmaktır.
Giriş
- RFC3986 Bölüm 3'te URI dilbilgisini izleyen iyi biçimlendirilmiş mutlak bir HTTP URL'si .
- Hiçbir parça olmadığını varsayabilirsiniz.
- Köşeli parantez içindeki herhangi bir şeyin isteğe bağlı olduğunu belirten kısa biçim örneği:
http[s]://[user:pass@]host.name.com[:port]/[?param1=value1¶m2=value2...]
- Kaldırılacak sorgu parametrelerinin listesi.
Çıktı
Giriş listesinde tanımlanan parametreler olmadan değiştirilmiş HTTP URL'si.
Örnekler
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
puanlama
Bu kod golf , bu yüzden en kısa cevap (bayt cinsinden) kazanır.
&
parametreler arasındaki dışında herhangi bir yerde görünür?
?
? Ayrıca sipariş olduğu gibi tutulmalı mı?
&
Bir sorgu parametresinin parçasıysa, doğru şekilde urlencocode edilmelidir%26
http://foo:&foo=x@foo.com:8080/?foo=1&bar=foo
RFC tarafından izin verilir. Bu, mevcut çözümlerin bir demetini kırmalıdır. : D (Kural userinfo, &
=