Giriş
URL kodlaşdırma və dekodlaşdırma bir çox tərtibatçının qarşılaşdığı, lakin tam başa düşmədikləri veb tərtibatda əsas anlayışlardır. Yəqin ki, %20 və ya %3D kimi qəribə simvolları olan URL-lər görmüsünüz, amma onların nə demək olduğunu və nə vaxt istifadə edilməli olduğunu bilirsinizmi?
Bu bələdçi URL kodlaşdırma və dekodlaşdırmanı aydınlaşdıracaq, veb tərtibat layihələrinizdə onları nə vaxt, niyə və necə istifadə etməli olduğunuzu izah edəcək.
URL Kodlaşdırma Nədir?
URL kodlaşdırma, həmçinin faiz kodlaşdırma kimi tanınır, simvolları internet üzərindən təhlükəsiz ötürülə bilən formata çevirən prosesdir. O, təhlükəsiz olmayan və ya rezerv edilmiş simvolları % və ardınca iki onaltılıq rəqəmlə əvəz edir.
URL Kodlaşdırmanın Mövcud Olma Səbəbi
URL-lərin təhlükəsiz istifadə edilə bilən məhdud simvol dəsti var:
- Rezerv edilməmiş simvollar: A-Z, a-z, 0-9 və bir neçə xüsusi simvol (-, _, ., ~)
- Rezerv edilmiş simvollar: URL-lərdə xüsusi mənaya malikdir (/, ?, #, &, =, və s.)
- Təhlükəsiz olmayan simvollar: URL-lərdə problemlərə səbəb ola bilər (boşluqlar, qeyri-ASCII simvollar və s.)
Kodlaşdırma Prosesi
Simvol kodlaşdırılmalı olduqda:
- Simvolu onun ASCII/UTF-8 bayt dəyərinə çevirin
- Həmin baytı iki onaltılıq rəqəm kimi təqdim edin
- Əvvəlinə
%simvolu əlavə edin
Nümunə: Boşluq simvolu (ASCII 32 = 0x20) %20 olur
Ümumi Kodlaşdırılmış Simvollar
Tez-tez Kodlaşdırılan Simvollar
Boşluq → %20
! → %21
" → %22
# → %23
$ → %24
% → %25
& → %26
' → %27
( → %28
) → %29
* → %2A
+ → %2B
, → %2C
/ → %2F
: → %3A
; → %3B
= → %3D
? → %3F
@ → %40
[ → %5B
\ → %5C
] → %5D
^ → %5E
` → %60
{ → %7B
| → %7C
} → %7D
~ → %7E
Xüsusi Hallar
Boşluq: %20 və ya + (sorğu sətrlərində) kimi kodlaşdırıla bilər
Qeyri-ASCII Simvollar: UTF-8 bayt təsviri istifadə edərək kodlaşdırılır
Unicode Simvollar: Çox baytlı kodlaşdırma (məs., é → %C3%A9)
URL Kodlaşdırmasını Nə Vaxt İstifadə Etməli
1. Sorğu Parametrləri
Problem: Sorğu parametrləri xüsusi simvollar ehtiva edə bilər Həll: Parametr dəyərlərini kodlaşdırın
Nümunə:
Pis: /search?q=salam dünya&category=veb tərtibat
Yaxşı: /search?q=salam%20d%C3%BCnya&category=veb%20t%C9%99rtibat
2. Yol Seqmentləri
Problem: URL yolları xüsusi simvollar ehtiva edə bilər Həll: Yol seqmentlərini kodlaşdırın
Nümunə:
Pis: /files/mənim sənədim.pdf
Yaxşı: /files/m%C9%99nim%20s%C9%99n%C9%99dim.pdf
3. Forma Məlumatlarının Göndərilməsi
Problem: Forma məlumatları rezerv edilmiş simvollar ehtiva edə bilər Həll: Göndərilmədən əvvəl forma dəyərlərini kodlaşdırın
Nümunə:
<form action="/submit" method="get">
<input name="email" value="[email protected]">
<!-- [email protected] → user%40example.com olur -->
</form>
4. API Sorğuları
Problem: API parametrləri xüsusi simvollar ehtiva edə bilər Həll: API çağırışlarında parametrləri kodlaşdırın
Nümunə:
const query = "salam dünya";
const url = `https://api.example.com/search?q=${encodeURIComponent(query)}`;
// Nəticə: https://api.example.com/search?q=salam%20d%C3%BCnya
5. URL-lərdə Fayl Adları
Problem: Fayl adları boşluqlar və ya xüsusi simvollar ehtiva edə bilər Həll: URL-lərdə fayl adlarını kodlaşdırın
Nümunə:
Pis: /downloads/mənim faylım (2024).pdf
Yaxşı: /downloads/m%C9%99nim%20fayl%C4%B1m%20%282024%29.pdf
URL Dekodlaşdırma
URL dekodlaşdırma əks prosesdir—kodlaşdırılmış simvolları orijinal formalarına çevirmək.
Nə Vaxt Dekodlaşdırmaq Lazımdır
- URL Parametrlərinin İşlənməsi: Sorğu sətirlərindən dəyərləri çıxarın
- URL-lərin Təhlili: URL-ləri komponentlərə ayırın
- URL-lərin Göstərilməsi: İstifadəçilərə oxuna bilən URL-lər göstərin
- API Cavabları: API-dən alınan məlumatları dekodlaşdırın
Dekodlaşdırma Prosesi
- İki hex rəqəmi ilə
%tapın - Hex rəqəmləri onluq sistemə çevirin
- Müvafiq simvolla əvəz edin
Nümunə: %20 → Boşluq (0x20 = 32 = boşluq simvolu)
Praktik Nümunələr
Nümunə 1: Sorğu Parametrlərinin Kodlaşdırılması
// JavaScript
const params = {
name: "Vüsal Məmmədov",
email: "[email protected]",
message: "Salam, dünya!"
};
const queryString = Object.entries(params)
.map(([key, value]) =>
`${encodeURIComponent(key)}=${encodeURIComponent(value)}`
)
.join('&');
// Nəticə: name=V%C3%BCsal%20M%C9%99mm%C9%99dov&email=vusal%40example.com&message=Salam%2C%20d%C3%BCnya%21
Nümunə 2: URL-lərin Təhlükəsiz Qurulması
function buildURL(base, path, params) {
const encodedPath = path.split('/')
.map(segment => encodeURIComponent(segment))
.join('/');
const queryString = Object.entries(params)
.map(([key, value]) =>
`${encodeURIComponent(key)}=${encodeURIComponent(value)}`
)
.join('&');
return `${base}${encodedPath}?${queryString}`;
}
// İstifadə
const url = buildURL('https://api.example.com', '/users/vüsal məmmədov', {
filter: 'active',
sort: 'name'
});
Nümunə 3: URL Parametrlərinin Dekodlaşdırılması
function parseQueryString(queryString) {
const params = {};
const pairs = queryString.split('&');
for (const pair of pairs) {
const [key, value] = pair.split('=');
params[decodeURIComponent(key)] = decodeURIComponent(value || '');
}
return params;
}
// İstifadə
const query = "name=V%C3%BCsal%20M%C9%99mm%C9%99dov&email=vusal%40example.com";
const params = parseQueryString(query);
// { name: "Vüsal Məmmədov", email: "[email protected]" }
Müxtəlif Dillərdə Kodlaşdırma Funksiyaları
JavaScript
// Bütün URL-i kodlaşdır
encodeURI("https://example.com/boşluqlu yol/fayl.html")
// "https://example.com/bo%C5%9Fluqlu%20yol/fayl.html"
// Komponenti kodlaşdır (daha aqressiv)
encodeURIComponent("salam dünya")
// "salam%20d%C3%BCnya"
// Dekodlaşdır
decodeURI("https://example.com/bo%C5%9Fluqlu%20yol/fayl.html")
decodeURIComponent("salam%20d%C3%BCnya")
Əsas Fərq:
encodeURI(): URL-i kodlaşdırır, lakin URL strukturunu qoruyurencodeURIComponent(): Hər şeyi kodlaşdırır, sorğu parametrləri üçün istifadə edin
Python
from urllib.parse import quote, unquote, urlencode
# Kodlaşdır
quote("salam dünya")
# "salam%20d%C3%BCnya"
# Dekodlaşdır
unquote("salam%20d%C3%BCnya")
# "salam dünya"
# Sorğu parametrlərini kodlaşdır
urlencode({"name": "Vüsal Məmmədov", "age": 30})
# "name=V%C3%BCsal+M%C9%99mm%C9%99dov&age=30"
PHP
// Kodlaşdır
urlencode("salam dünya");
// "salam+d%C3%BCnya"
rawurlencode("salam dünya");
// "salam%20d%C3%BCnya"
// Dekodlaşdır
urldecode("salam+d%C3%BCnya");
rawurldecode("salam%20d%C3%BCnya");
Ümumi Səhvlər
Səhv 1: İkiqat Kodlaşdırma
Problem: Artıq kodlaşdırılmış sətirləri kodlaşdırmaq
// PİS
encodeURIComponent(encodeURIComponent("salam dünya"))
// "salam%2520d%C3%BCnya" (ikiqat kodlaşdırılmış)
// YAXŞI
encodeURIComponent("salam dünya")
// "salam%20d%C3%BCnya"
Səhv 2: Bütün URL-in Kodlaşdırılması
Problem: Komponentlər əvəzinə tam URL-in kodlaşdırılması
// PİS
encodeURIComponent("https://example.com/search?q=salam dünya")
// :, /, ? və s. daxil olmaqla bütün URL-i kodlaşdırır
// YAXŞI
const base = "https://example.com/search";
const query = encodeURIComponent("salam dünya");
const url = `${base}?q=${query}`;
Səhv 3: Xüsusi Simvolları Kodlaşdırmamaq
Problem: Müəyyən simvolların təhlükəsiz olduğunu güman etmək
// PİS - & sorğu sətirini pozacaq
const url = `/search?q=salam&dünya&category=texnologiya`;
// YAXŞI
const url = `/search?q=${encodeURIComponent("salam&dünya")}&category=texnologiya`;
Səhv 4: Ardıcıl Olmayan Kodlaşdırma
Problem: Kodlaşdırılmış və kodlaşdırılmamış dəyərləri qarışdırmaq
// PİS
const url = `/search?q=salam dünya&category=texnologiya`; // Boşluq kodlaşdırılmayıb
// YAXŞI
const url = `/search?q=${encodeURIComponent("salam dünya")}&category=texnologiya`;
Ən Yaxşı Təcrübələr
1. Həmişə İstifadəçi Girişini Kodlaşdırın
İstifadəçi girişinə URL-lərdə heç vaxt etibar etməyin. Həmişə kodlaşdırın:
- Forma məlumatları
- Axtarış sorğuları
- Fayl adları
- İstifadəçi tərəfindən təqdim edilən hər hansı məlumat
2. Müvafiq Funksiyalardan İstifadə Edin
- URL komponentləri:
encodeURIComponent()istifadə edin - Tam URL-lər:
encodeURI()istifadə edin və ya komponentləri ayrıca kodlaşdırın - Forma məlumatları: Forma kodlaşdırmasından və ya
encodeURIComponent()istifadə edin
3. İşləyərkən Dekodlaşdırın
Həmişə dekodlaşdırın:
- URL-lərdən parametrləri çıxararkən
- API cavablarını işləyərkən
- İstifadəçilərə URL-ləri göstərərkən
- Sorğu sətirlərini təhlil edərkən
4. Sərhəd Halları İdarə Edin
- Qeyri-ASCII simvollar (UTF-8 kodlaşdırma)
- Çox uzun URL-lər (bölmə tələb oluna bilər)
- Müxtəlif kontekstlərdə xüsusi simvollar
- Brauzerlərdə kodlaşdırma fərqləri
Təhlükəsizlik Mülahizələri
URL İneksiya Hücumları
Risk: URL-lərdə zərərli kod Həll: Dekodlaşdırılmış dəyərləri həmişə yoxlayın və təmizləyin
// PİS - Dekodlaşdırılmış dəyərin birbaşa istifadəsi
const userInput = decodeURIComponent(urlParam);
document.innerHTML = userInput; // XSS riski
// YAXŞI - Dekodlaşdırmadan sonra təmizləyin
const userInput = sanitize(decodeURIComponent(urlParam));
document.textContent = userInput;
Məlumat Sızması
Risk: URL-lərdə həssas məlumat Həll: Həssas məlumatı heç vaxt URL-lərdə, hətta kodlaşdırılmış formada da yerləşdirməyin
Nəticə
URL kodlaşdırma və dekodlaşdırma veb tərtibatçıları üçün əsas bacarıqlardır. URL-ləri nə vaxt və necə kodlaşdırmağı başa düşmək pozulmuş keçidlərin, təhlükəsizlik problemlərinin və istifadəçi təcrübəsi problemlərinin qarşısını alır.
Yadda saxlayın:
- İstifadəçi girişi və ya xüsusi simvollarla URL qurarkən kodlaşdırın
- URL-ləri işləyərkən və ya istifadəçilərə göstərərkən dekodlaşdırın
- İstifadə etməzdən əvvəl dekodlaşdırılmış dəyərləri həmişə yoxlayın
- Düzgün kontekst üçün düzgün funksiyadan istifadə edin
URL kodlaşdırmasına yiyələnmək sizi daha effektiv veb tərtibatçı edəcək və daha möhkəm tətbiqlər yaratmağınıza kömək edəcək.
Bizim URL Alətlərimizi İstifadə Edin
1tool.dev-da URL-lərlə işləməyi sadə və təhlükəsiz edən güclü URL Kodlayıcı və URL Dekodlayıcı alətləri təklif edirik. API-lər yaradırsınız və ya veb sorğularını işləyirsiniz, alətlərimiz URL kodlaşdırmasını düzgün idarə etməyinizə kömək edir.
URL kodlaşdırma alətlərimizi bu gün sınayın və URL-lərinizin həmişə düzgün formatlandırıldığından əmin olun!




