Sorgu dizesi parametrelerini doğru kodlamak
Aracın iki modu vardır. Bileşen (encodeURIComponent) tek bir parametre adı veya değeri içindir; Tam URL (encodeURI) ise yapısı zaten doğru olan eksiksiz bir URL içindir. İkisini karıştırmak, bozuk sorgu dizelerinin en yaygın nedenidir.
Çözümlü örnek
Tam URL modu değerin içindeki & işaretini bıraktığından sunucu bir yerine iki parametre okur.
- Girdi
- https://example.com/search?q=salt & pepper&page=2
- Sonuç ·
encodeURI() - https://example.com/search?q=salt%20&%20pepper&page=2
Sunucunun okuduğu parametreler
- "q" = "salt "
- " pepper" = ""
- "page" = "2"
Değeri önce Bileşen modunda kodlamak onu tek bir parametre olarak korur.
- Girdi
- salt & pepper
- Sonuç ·
encodeURIComponent() - salt%20%26%20pepper
https://example.com/search?q=salt%20%26%20pepper&page=2
Sunucunun okuduğu parametreler
- "q" = "salt & pepper"
- "page" = "2"
Bileşen ve Tam URL modlarının karakter karakter karşılaştırması
| Karakter | Bileşen | Tam URL |
|---|---|---|
| : | %3A | : |
| / | %2F | / |
| ? | %3F | ? |
| # | %23 | # |
| & | %26 | & |
| = | %3D | = |
| + | %2B | + |
| ␠ | %20 | %20 |
| é | %C3%A9 | %C3%A9 |
Araç bunu nasıl işler
- Her parametre adını ve değerini Bileşen modunda ayrı ayrı kodlayın; bu mod & = ? # + ve / işaretlerini kaçışlar.
- Kodlanmış çiftleri ad=değer biçiminde & ile birleştirin ve sonucu URL'deki ? işaretinden sonra ekleyin.
- Tam URL modunu yalnızca URL'nin tamamında kullanın: : / ? # & = + işaretlerini olduğu gibi bıraktığı için bunları içeren bir değeri koruyamaz.