Saya mencoba meneruskan parameter ke URL yang terlihat seperti ini:
http://www.foobar.com/foo?imageurl=
Dan saya ingin meneruskan parameter seperti URL gambar yang dihasilkan sendiri oleh API lain, dan tautan untuk gambar tersebut ternyata:
http://www.image.com/?username=unknown&password=unknown
Namun, ketika saya mencoba menggunakan URL:
http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown
Ini tidak berhasil.
Saya juga mencoba menggunakan encodeURI()
dan encodeURIComponent()
pada imageURL, dan itu juga tidak berhasil.
javascript
url
encodeuricomponent
Apoorv Saxena
sumber
sumber
Jawaban:
Dengan PHP
Hasil
Dengan Javascript:
DEMO: http://jsfiddle.net/Lpv53/
sumber
Menggunakan ES6 baru
Object.entries()
, itu membuat sedikit bersarangmap
/join
:sumber
Anda tidak boleh menggunakan
encodeURIComponent()
atauencodeURI()
. Anda harus menggunakanfixedEncodeURIComponent()
danfixedEncodeURI()
, menurut Dokumentasi MDN.Mengenai
encodeURI()
...Mengenai
encodeURIComponent()
...Lalu apa bedanya?
fixedEncodeURI()
danfixedEncodeURIComponent()
mengkonversi set yang sama nilai-nilai, tetapifixedEncodeURIComponent()
juga mengubah set ini:+@?=:*#;,$&
. Set ini digunakan dalamGET
parameter (&
,,+
dll.), Tag anchor (#
), tag wildcard (*
), bagian email / nama pengguna (@
), dll.Misalnya - Jika Anda menggunakan
encodeURI()
,[email protected]/?email=me@home
tidak akan mengirim yang kedua dengan benar@
ke server, kecuali untuk browser Anda yang menangani kompatibilitas (seperti yang biasanya dilakukan Chrome).sumber
"except for your browser handling the compatibility"
?site.com?formula=a+b=c
berfungsi dalam produksiformula=>a+b=c
, itu melanggar spesifikasi, tetapi jika berfungsi, itu karena Chrome / dll. dapat mendeteksi kegagalan spesifikasi URL, dll., dan seterusnya, w /[email protected][email protected]
.