Estou tentando passar parâmetros para um URL parecido com este:
http://www.foobar.com/foo?imageurl=
E eu quero passar os parâmetros como um URL de imagem que é gerado por outra API, e o link para a imagem fica assim:
http://www.image.com/?username=unknown&password=unknown
No entanto, quando tento usar o URL:
http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown
Não funciona.
Também tentei usar encodeURI()
e encodeURIComponent()
no imageURL, mas também não funcionou.
javascript
url
encodeuricomponent
Apoorv Saxena
fonte
fonte
Respostas:
Com PHP
Resultado
Com Javascript:
DEMO: http://jsfiddle.net/Lpv53/
fonte
Usando o novo ES6
Object.entries()
, torna-se um pouco divertido aninhadomap
/join
:fonte
Você não deve usar
encodeURIComponent()
ouencodeURI()
. Você deve usarfixedEncodeURIComponent()
efixedEncodeURI()
, de acordo com a Documentação MDN.Em relação
encodeURI()
...Em relação
encodeURIComponent()
...Então qual é a diferença?
fixedEncodeURI()
efixedEncodeURIComponent()
converter o mesmo conjunto de valores, masfixedEncodeURIComponent()
também converte este conjunto:+@?=:*#;,$&
. Este conjunto é utilizado emGET
parâmetros (&
,+
, etc.), marcas de âncora (#
), etiquetas curinga (*
), peças de e-mail / nome de usuário (@
), etc ..Por exemplo - Se você usar
encodeURI()
,[email protected]/?email=me@home
não enviará corretamente o segundo@
para o servidor, exceto para o seu navegador lidar com a compatibilidade (como o Chrome naturalmente faz com frequência).fonte
"except for your browser handling the compatibility"
?site.com?formula=a+b=c
trabalha na produçãoformula=>a+b=c
, isso viola as especificações, mas se funciona, é porque Chrome / etc. pode detectar a falha de especificação do URL, etc., e assim por diante, w /[email protected][email protected]
.