URL Kodlama Nedir? Percent-encoding'in Tam Açıklaması
Hızlı Yanıt
URL kodlama (percent-encoding), URL'deki unsafe karakterleri % ve iki hex rakam ile değiştirir. Örneğin, boşluk %20, & %26 olur. URL'lerin ambiguity olmadan iletilebilmesini sağlar. Ücretsiz URL Encoder ve Decoder kullanın.
giriiş
URL kodlama, percent-encoding de denir, URL'deki özel karakterleri internet üzerinden güvenle iletilebilecek şekilde kodlama mekanizmasıdır. URL'ler sınırlı bir ASCII karakter seti —harf, rakam ve birkaç reserved karakter— içerebilir. Başka herhangi bir karakter (boşluk, tırnak, non-ASCII harf), karakterin byte değerini temsil eden iki hex rakamdan önce yüzde işareti (%) olarak kodlanmalıdır. URL kodlama RFC 3986 tarafından tanımlanır.
Adım adım
-
Hangi karakterlerin kodlamaya ihtiyacı olduğunu anlayın
Ayrılmamış karakterlerin (A-Z, a-z, 0-9, -, _, ., ~) kodlamaya ihtiyacı yoktur. Ayrılmış karakterlerin (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =) URLs'de özel anlamı vardır ve veri olarak kullanıldığında kodlanmalıdır. Diğer tüm karakterler (boşluklar, tırnak işaretleri, ASCII olmayan) kodlanmalıdır.
-
Kodlama mekanizmasını öğrenin
Kodlanması gereken her karakter UTF-8 bayt dizisine dönüştürülür, ardından her bayt %XX olarak temsil edilir; burada XX, onaltılık değerdir. Boşluk (0x20) → %20. ASCII olmayan karakter 'é' (UTF-8: 0xC3 0xA9) → %C3%A9.
-
EncodeURI ve encodeURIComponent'i ayırt etme
encodeURI() tam bir URL kodlar ancak URL yapısının parçası olan ayrılmış karakterleri (:/?&=) korur. encodeURIComponent(), ayrılmamış karakterler dışındaki her şeyi kodlar; ayrılmış karakterlerin yapı değil veri olduğu sorgu parametresi değerleri için bunu kullanın.
-
Yüzde kodlu URLs kodunu çöz
Kod çözme, kodlamayı tersine çevirir: %20 → boşluk, %C3%A9 → é. Tam URLs için decodeURI() işlevini ve sorgu parametresi değerleri için decodeURIComponent() işlevini kullanın. Geçersiz kaçış dizileri (%ZZ gibi) hatalara neden oluyor.
Örnekler
Bir alanı kodlama
Giriş: hello world
Çıkış: hello%20world
ASCII olmayan metni kodlayın
Giriş: café
Çıkış: caf%C3%A9
Sorgu parametresi değerini kodlama
Giriş: name=John Doe & Co.
Çıkış: name%3DJohn%20Doe%20%26%20Co.
Yaygın Sorunlar
- Yalnızca değerlerin kodlanması gerektiğinde URL'nin tamamını kodlama — URL yapısını değil (://?&=) sorgu parametre değerlerini kodlayın.
- Çift kodlama —eğer bir URL zaten kodlanmışsa, kodlama yeniden %20 yerine %2520 üretir. Zaten kodlanmış olup olmadığından emin değilseniz önce kodu çözün.
- encodeURI ve encodeURIComponent'in yanlış kullanılması —encodeURI, URL yapı karakterlerini korur; encodeURIComponent bunları kodlar. Sorgu parametresi değerleri için ikincisini kullanın.
- Geçersiz kaçış dizileri —%ZZ veya sondaki tek bir % geçersizdir ve kodu çözüldüğünde hatalara neden olur.
İpuçları
- URL enjeksiyonunu önlemek için her zaman boşluk, özel karakterler veya kullanıcı girişi içerebilecek sorgu parametresi değerlerini kodlayın.
- Sorgu parametresi değerleri için encodeURIComponent() işlevini ve yalnızca güvenli olmayan karakterlerin kodlanmasına ihtiyaç duyan tam URLs için encodeURI() işlevini kullanın.
- URL kodlama şifreleme değildir; herkes kodu çözebilir. Asla hassas verileri gizlemek için kullanmayın.
- Tarayıcınızda anında, özel dönüşüm için URL Kodlayıcı ve Kod Çözücümüzü kullanın.