
Web Formu Verileri Gönderilirken Boşluklar %20 Oluyor: Normal mi, Nasıl Düzeltilir?
Bir SEO editörü olarak, web siteleri ve web uygulamalarıyla uğraşırken sıklıkla karşılaştığımız teknik detaylar vardır. Bunlardan biri de kullanıcıların web formlarına girdikleri verilerin sunucuya gönderilirken veya URL parametreleri olarak taşınırken boşluk karakterlerinin neden `%20` gibi garip görünen bir ifadeye dönüştüğüdür. Bu durum, özellikle teknik bilgiye sahip olmayan site sahipleri veya yeni başlayan geliştiriciler için kafa karıştırıcı olabilir ve hatta bir hata olarak algılanabilir. Ancak endişelenmeyin: Bu durum sandığınız gibi bir sorun değil, aksine web'in temel işleyişini sağlayan standart bir mekanizmadır.
Bu makalede, boşlukların neden `%20` olarak kodlandığını, bunun ne anlama geldiğini, bir hata mı yoksa bir özellik mi olduğunu ve bu kodlanmış verilerle sunucu tarafında nasıl başa çıkıldığını detaylı bir şekilde inceleyeceğiz. Ayrıca, bu süreci anlamanıza ve yönetmenize yardımcı olacak
URL kodlama aracı kavramına da değineceğiz.
Boşlukların %20 Olmasının Arkasındaki Sır: URL Kodlama Nedir?
Web formlarından gönderilen verilerin veya doğrudan URL'ye eklenen parametrelerin boşluk karakterlerinin `%20` ile değiştirilmesi, "URL Kodlama" (URL Encoding) veya "Yüzde Kodlama" (Percent-Encoding) olarak bilinen standart bir işlemdir. Bu işlem, World Wide Web Consortium (W3C) ve İnternet Mühendisliği Görev Gücü (IETF) tarafından belirlenen standartlar, özellikle de RFC 3986 (Uniform Resource Identifier (URI): Generic Syntax) ile tanımlanmıştır.
Temel olarak, URL'ler (Uniform Resource Locator) belirli bir formata uymak zorundadır. Bu format, özel anlamları olan karakterleri (örneğin `/`, `?`, `&`, `=`, `#`) ve alfanümerik karakterleri (A-Z, a-z, 0-9) içerir. Ancak boşluklar gibi bazı karakterler, URL'ler içinde doğrudan kullanıldığında belirsizliğe yol açabilir veya URL yapısını bozabilir. Örneğin, bir URL'deki boşluk, farklı tarayıcılar veya sunucular tarafından farklı şekilde yorumlanabilir ve bu da
veri gönderimi sırasında hatalara neden olabilir.
İşte tam da bu noktada URL kodlama devreye girer. Boşluk gibi "güvensiz" veya "özel" karakterler, `URI` içinde güvenli bir şekilde taşınabilmeleri için belirli bir formata dönüştürülürler. Bu format, yüzde işareti (`%`) ile başlayan ve ardından karakterin onaltılık (hexadecimal) ASCII değeri ile devam eden bir dizgedir. ASCII tablosuna göre boşluk karakterinin onaltılık değeri `20` olduğu için, boşluklar `%20` olarak kodlanır.
Bu kodlama, yalnızca boşluklar için değil, aynı zamanda `&`, `=`, `/`, `?`, `+` gibi URL'ler içinde özel anlamları olan diğer karakterler için de geçerlidir. Örneğin, bir ampersant (`&`) `%26`, bir eşittir işareti (`=`) `%3D` olarak kodlanır. Bu sayede, tarayıcı ve sunucu, URL'nin hangi kısmının gerçekten bir parametre değeri olduğunu, hangi kısmının ise bir URL yapısını belirten özel bir karakter olduğunu net bir şekilde ayırt edebilir. Bu standartlaşma, web'in evrensel olarak çalışmasını sağlayan kritik bir adımdır.
Neden Boşluklar %20 Olarak Kodlanır? Teknik Arka Plan
URL'ler, web'in adresleme sistemidir ve oldukça katı bir yapıya sahiptir. Bir URL; protokol (HTTP/HTTPS), alan adı, yol, sorgu dizisi (query string) ve parça tanımlayıcı (fragment identifier) gibi çeşitli bileşenlerden oluşur. Web formlarından gönderilen veriler genellikle URL'nin sorgu dizisi kısmına eklenir. Sorgu dizisi, `?` işaretiyle başlar ve `anahtar=değer` çiftlerinden oluşur; bu çiftler ise `&` işaretiyle ayrılır.
Örneğin: `https://www.ornek.com/arama?anahtarKelime=web+sitesi+tasarımı`
Eğer yukarıdaki örnekte "web sitesi tasarımı" ifadesindeki boşluklar kodlanmasaydı, sunucu bu ifadeyi "web", "sitesi" ve "tasarımı" olmak üzere üç ayrı kelime olarak algılayabilir veya sorgu dizisinin yapısını tamamen bozabilirdi. Bu durum, veri bütünlüğünü tehlikeye atar ve uygulamanın doğru çalışmasını engellerdi.
İşte bu yüzden,
HTTP protokolü tarafından ve tarayıcılar tarafından standart olarak, kullanıcıdan gelen
web formu verileri gönderilirken boşluklar gibi özel karakterler otomatik olarak URL kodlamasına tabi tutulur. Bu, aşağıdaki teknik nedenlerle zorunludur:
1.
URL Yapısının Bütünlüğü: URL'nin bölümlerini (anahtar, değer, ayırıcılar) net bir şekilde ayırmak için gereklidir. Boşluklar bu ayrımı belirsizleştirirdi.
2.
Evrensel Uyumluluk: Farklı web sunucuları, programlama dilleri ve tarayıcılar arasında tutarlı bir veri iletişimi sağlamak için bir standarda ihtiyaç vardır. URL kodlaması bu standardı sunar.
3.
Güvenlik: Kötü niyetli kullanıcıların URL'lere enjekte edebileceği bazı karakter dizilerini (örneğin `