melarikan diri()
Jangan gunakan itu!
escape()
didefinisikan dalam bagian B.2.1.2 melarikan diri dan teks pengantar Lampiran B mengatakan:
... Semua fitur bahasa dan perilaku yang ditentukan dalam lampiran ini memiliki satu atau lebih karakteristik yang tidak diinginkan dan tanpa adanya penggunaan sebelumnya akan dihapus dari spesifikasi ini. ...
... Pemrogram tidak boleh menggunakan atau menganggap keberadaan fitur dan perilaku ini saat menulis kode skrip ECMAS baru ....
Tingkah laku:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape
Karakter khusus dikodekan dengan pengecualian: @ * _ + -. /
Bentuk heksadesimal untuk karakter, yang kode unit nilai adalah 0xFF atau kurang, adalah urutan escape dua-digit: %xx
.
Untuk karakter dengan unit kode yang lebih besar, format empat digit %uxxxx
digunakan. Ini tidak diperbolehkan dalam string kueri (seperti yang didefinisikan dalam RFC3986 ):
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Tanda persen hanya dibolehkan jika diikuti langsung oleh dua hexdigit, persen diikuti oleh u
tidak diizinkan.
encodeURI ()
Gunakan encodeURI saat Anda menginginkan URL yang berfungsi. Lakukan panggilan ini:
encodeURI("http://www.example.org/a file with spaces.html")
mendapatkan:
http://www.example.org/a%20file%20with%20spaces.html
Jangan panggil komponen encodeURIC karena akan menghancurkan URL dan kembali
http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html
komponen encodeURIC ()
Gunakan komponen encodeURIC ketika Anda ingin menyandikan nilai parameter URL.
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
Maka Anda dapat membuat URL yang Anda butuhkan:
var url = "http://example.net/?param1=" + p1 + "¶m2=99";
Dan Anda akan mendapatkan URL lengkap ini:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
Perhatikan bahwa komponen encodeURIC tidak lepas dari '
karakter. Bug yang umum adalah menggunakannya untuk membuat atribut html seperti href='MyUrl'
, yang dapat mengalami bug injeksi. Jika Anda membuat html dari string, gunakanlah "
alih-alih '
untuk kutipan atribut, atau tambahkan lapisan pengkodean tambahan ( '
dapat dikodekan sebagai% 27).
Untuk informasi lebih lanjut tentang jenis pengkodean ini, Anda dapat memeriksa: http://en.wikipedia.org/wiki/Percent-encoding
encodeURIComponent("var1=value1&var2=value2")
ini bukan kasus penggunaan biasa. Contoh itu akan menyandikan=
dan&
, yang mungkin bukan yang dimaksudkan!encodeURIComponent
biasanya diterapkan secara terpisah untuk hanya nilai di setiap pasangan nilai kunci (bagian setelah masing-masing=
).