Próbuję przekazać parametry do adresu URL, który wygląda następująco:
http://www.foobar.com/foo?imageurl=
Chcę przekazać parametry, takie jak adres URL obrazu, który jest generowany sam przez inny interfejs API, a link do obrazu wygląda następująco:
http://www.image.com/?username=unknown&password=unknown
Jednak gdy próbuję użyć adresu URL:
http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown
To nie działa.
Próbowałem też użyć encodeURI()
i encodeURIComponent()
na imageURL, ale to też nie działa.
javascript
url
encodeuricomponent
Apoorv Saxena
źródło
źródło
Odpowiedzi:
Dzięki PHP
Wynik
Z JavaScriptem:
DEMO: http://jsfiddle.net/Lpv53/
źródło
Używając nowego ES6
Object.entries()
, sprawia to przyjemność trochę zagnieżdżonemap
/join
:źródło
Nie powinieneś używać
encodeURIComponent()
aniencodeURI()
. Należy używaćfixedEncodeURIComponent()
ifixedEncodeURI()
, zgodnie z dokumentacją MDN.Odnośnie
encodeURI()
...Odnośnie
encodeURIComponent()
...Więc jaka jest różnica?
fixedEncodeURI()
ifixedEncodeURIComponent()
przekształcić ten sam zestaw wartości, alefixedEncodeURIComponent()
również przekształca ten zestaw:+@?=:*#;,$&
. Ten zestaw jest używany wGET
parametrach (&
,+
etc.), tagi kotwy (#
), wieloznacznych tagów (*
), części e-mail / nazwa użytkownika (@
), itp ..Na przykład - jeśli używasz
encodeURI()
,[email protected]/?email=me@home
nie prześle poprawnie drugiej@
do serwera, z wyjątkiem twojej przeglądarki obsługującej zgodność (co oczywiście często robi Chrome).źródło
"except for your browser handling the compatibility"
?site.com?formula=a+b=c
działa w produkcjiformula=>a+b=c
, narusza to specyfikację, ale jeśli działa, to dlatego, że Chrome / etc. może wykryć awarię specyfikacji adresu URL itp. i tak dalej, w /[email protected][email protected]
.