J'essaie de transmettre des paramètres à une URL qui ressemble à ceci:
http://www.foobar.com/foo?imageurl=
Et je veux passer les paramètres tels qu'une URL d'image qui est générée elle-même par une autre API, et le lien pour l'image se révèle comme:
http://www.image.com/?username=unknown&password=unknown
Cependant, lorsque j'essaye d'utiliser l'URL:
http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown
Ça ne marche pas.
J'ai également essayé d'utiliser encodeURI()
et encodeURIComponent()
sur l'imageURL, et cela ne fonctionne pas non plus.
javascript
url
encodeuricomponent
Apoorv Saxena
la source
la source
Réponses:
Avec PHP
Résultat
Avec Javascript:
DÉMO: http://jsfiddle.net/Lpv53/
la source
En utilisant le nouvel ES6
Object.entries()
, cela en fait un petitmap
/ amusant imbriquéjoin
:la source
Vous ne devriez pas utiliser
encodeURIComponent()
ouencodeURI()
. Vous devez utiliserfixedEncodeURIComponent()
etfixedEncodeURI()
, conformément à la documentation MDN.Concernant
encodeURI()
...Concernant
encodeURIComponent()
...Alors, quelle est la difference?
fixedEncodeURI()
etfixedEncodeURIComponent()
convertir le même ensemble de valeurs, maisfixedEncodeURIComponent()
convertit également cet ensemble:+@?=:*#;,$&
. Cet ensemble est utilisé dans lesGET
paramètres (&
,+
, etc.), les balises d'ancrage (#
), les balises génériques (*
), pièces e - mail / nom d' utilisateur (@
), etc ..Par exemple - Si vous utilisez
encodeURI()
,[email protected]/?email=me@home
n'enverra pas correctement le second@
au serveur, sauf pour votre navigateur gérant la compatibilité (comme Chrome le fait naturellement souvent).la source
"except for your browser handling the compatibility"
?site.com?formula=a+b=c
fonctionne en productionformula=>a+b=c
, cela enfreint les spécifications, mais si cela fonctionne, c'est parce que Chrome / etc. peut détecter l'échec de spécification de l'URL, etc., et ainsi de suite, w /[email protected][email protected]
.