Bağlantınız neden veri kaybediyor: parametre ve parça düzeltme
URL içindeki & ve # işaretlerini ayırt edin, çift kodlamadan kaçının ve paylaşacağınız tam bağlantıyı WikiURL ile kontrol edin.

Açılan sayfa her zaman beklediğiniz veriyi almaz
Kahve ve çay araması için bağlantı hazırladınız. Sayfa açılıyor, ancak sonuçlar amacınıza uymuyor. Sunucuyu veya kısaltıcıyı suçlamadan önce paylaştığınız tam adresi inceleyin. Kurgusal örneğimizde q=cafe&te, form parametrelerinin yaygın yorumunda tek bir cafe&te değeri değildir: & girdileri ayırır. Ayrıca #precios bir parça tanımlar. Gerçek adresi test etmeden önce example.invalid yerine bu sorguyu destekleyen kendi sayfanızı kullanın.
Teşhisi üç soruya ayırın: hangi sayfayı açmak istiyorsunuz, hangi veriyi almalı ve sonrasında hangi bölüm gösterilmeli? Düğmenin üzerinde okuduğunuz görünen etiket tek başına yeterli değildir: kopyalamanız gereken şey o düğmenin gerçekten açacağı bağlantının tam URL adresidir. Görünen yazı ile gerçek hedef adresi birbirine karıştırmadan, düzenlemeye başlamadan önce referans olarak saklayacağınız kopyayı elde edin. Düzenlemeden önce bir referans sürüm saklayın. Bu rehber bileşenleri, ardından sonucu WikiURL ile incelemeyi önerir; her sitenin q adını tanıdığını veya başarılı yanıtın doğru arama sonuçları anlamına geldiğini vaat etmez.
https://example.invalid/buscar?q=cafe&te#preciosVe işareti metnin parçasıysa ayırıcı olarak kullanmayın
Tam olarak cafe & te aramak için ve işareti q değerinin içinde olmalıdır. URLSearchParams ile parametre oluştururken kodlanmamış metin verin; serileştirme bu karakteri %26 olarak temsil eder. MDN, bu arayüzün parametreleri metne dönüştürürken form kodlaması uyguladığını ve boşlukları + ile temsil ettiğini açıklar. Bu, URL’deki tüm ve işaretlerini değiştirmeniz gerektiği anlamına gelmez: bazıları bilerek parametreleri ayırır.
JavaScript örneği bir tabandan adres oluşturur, arama değerini atar ve parçayı ayrı ekler. Sonucu görmek için örneği yerel bir JavaScript ortamında çalıştırabilirsiniz; kurgusal alan adına arama göndermezsiniz. Programlama yapmıyorsanız metni elle birleştirmek yerine kendi arama sayfanızın ürettiği bağlantıyı kullanın. Beklenen değerle sitenin gösterdiği sonucu karşılaştırın; bağlantıda %26 görmek belirli uygulamanın veriyi nasıl yorumladığını kanıtlamaz.
const url = new URL("https://example.invalid/buscar");
url.searchParams.set("q", "cafe & te");
url.hash = "precios";
console.log(url.href);
// https://example.invalid/buscar?q=cafe+%26+te#preciosParça sunucunun aldığı bir parametre değildir
MDN, # sonrasındaki parçanın istemcide işlendiğini ve kaynak istenirken sunucuya gönderilmediğini belgeler. Bir sayfa bunu precios gibi bir bölüme gitmek veya başka uygulama davranışı için kullanabilir. Bu nedenle q=cafe#te yazıldığında te, o istekte sunucuya giden değeri tamamlamaz. # arama metninin parçası olacaksa değer içindeki gösterimi %23 olur; üçüncü adres bunu örnekler.
İki etkiyi ayrı kontrol edin: arama beklenen sonuçları göstermeli ve parça istenen yere ulaşmalıdır. Bölüm var olmalı veya uygulama bu parçayı tanımalıdır. Siteyi sunucudan sorgulayan kontrol aracı tek başına tarayıcının bir bölüme kaydığını doğrulamaz. Tüm parçaları evrensel çözüm olarak silmeyin; alıcının ihtiyaç duyduğu kısmı ortadan kaldırabilirsiniz.
https://example.invalid/buscar?q=cafe%23te#preciosDeğeri bir kez kodlayın, adresin tamamını değil
RFC 3986, bileşenleri ayıran karakterlerle veriyi ayırt eder ve aynı dizenin tekrar tekrar kodlanmasına veya çözülmesine karşı uyarır. Kodlanmamış değer bekleyen işleve cafe%26te biçiminde önceden kodlanmış metin verirseniz yüzde işareti %25 olabilir ve %2526 ortaya çıkabilir. Bir katman eklemiş olursunuz; istediğiniz aramayı otomatik olarak korumuş olmazsınız. Örnekteki iki satır bu değişikliği fark etmeye yardımcı olur.
Düzeltme verinin kaynağına bağlıdır. İnsan metninden başlıyorsa parametre oluşturan arayüze kodlamadan verin. Geçerli tam URL’den başlıyorsa bütün adresi tek değer sayarak yeniden kodlamayın. Her işlevin veya formun ne aldığını belgeleyin. %, & veya # üzerinde genel bul-değiştir düzeltmelerinden kaçının: doğru ayırıcıları, gerekli parametreleri veya değiştirmek istemediğiniz yolları değiştirebilirsiniz.
q=cafe%26te
q=cafe%2526teYanıt için WikiURL, içerik için tarayıcı kullanın
Gerçek, herkese açık bir adres elde ettiğinizde WikiURL URL kontrol aracına yapıştırın. Dönen HTTP durumunu ve son hedefi inceleyin. Uygulama sunucudan sorgular ve yönlendirmeleri takip eder; bu inceleme beklenmeyen hedefleri bulmaya yardımcı olur. Yönetim bağlantıları, parolalar veya özel veriler içeren adresleri yapıştırmayın. Örneklerdeki example.invalid adresini kontrol etmeye çalışmayın; burada kurgusal hedef olarak kullanılır.
Gerçek sürümü tarayıcıda da açıp aramayı ve bölümü inceleyin. Başarılı yanıt, beklenen filtreyi uygulamadan sayfayı yükleyebilir. Yönlendirme varsa parametrelerini referansla karşılaştırın ve parçayı tarayıcıda gözlemleyin. Kontrol aracı uygulama mantığını sizin yerinize yorumlamaz, güvenliği onaylamaz veya kullanıcı hesabının içeriği görme izni olduğunu kanıtlamaz. Amaç yanıt kanıtlarını işlevsel incelemeyle birleştirmektir.
Başka kişinin alacağı kopyayı test edin
Son bağlantıyı paylaşacağınız kanala yapıştırın ve geniş dağıtımdan önce o kopyayı açın. Cümlenin son noktasını eklemediğinizi, kopyalarken parça kaybetmediğinizi ve görünen metni hedef sanmadığınızı kontrol edin. İçerik herkese açık olacaksa yönetici oturumuna bağımlı olmadan test edin. QR’ye dönüştürürseniz kaynak dosyaya ek olarak taramanın gösterdiği adresi de inceleyin.
Küçük bir kayıt tutun: ilk adres, beklenen arama değeri, amaçlanan parça, paylaşılan URL ve gözlenen sonuç. Hata varsa ilgili bileşene dönün ve düzelttikten sonra testi tekrarlayın. Yalnızca kontrol edilmiş sürümü yayımlayın. Böylece parametre oluşturma sorunu, hedefi değiştiren yönlendirme ve tarayıcı davranışını ayırt eder; açılan bir bağlantıyı göndermek istediğiniz tüm veriyi koruduğunun garantisine dönüştürmezsiniz.