Web Sitenizdeki HTTP 415 Hatası Nasıl Giderilir?

Web Sitenizdeki HTTP 415 Hatası Nasıl Giderilir?

Web’in ilk günlerinde resim, video ve GIF kullanımı tipik olmasa da, artık bir sitenin bilgilendirici metnin yanı sıra çekici görseller de sunmasını bekliyoruz. Tarayıcı ve sunucu arasındaki iletişim medya uyuşmazlığı nedeniyle ters gittiğinde bir hata görmeniz de şaşırtıcı değildir. Bu durumda, “HTTP 415” hatası.

Medya, modern web’in neredeyse bir ön koşulu olduğundan, bununla ilgili bir hata görmek, hızlı bir şekilde bir düzeltmeye ihtiyacınız olacağı anlamına gelir. Ancak, diğer hata düzeltmelerinin aksine – özellikle WordPress web siteleri için – bu sorun zorlu bir çerezdir. Bunu çözmek için biraz kodlama bilgisine ihtiyacınız olabilir, ancak bu daha sonrası için bir şeydir.

Bu yazıda, “HTTP 415” hatasını inceleyeceğiz ve buna neyin neden olduğu hakkında konuşacağız. Daha sonra da bu hatayı nasıl düzeltebileceğinizi tartışacağız.

HTTP 415 Hatası Nedir?

“HTTP 415” hatası, birçok 4XX durum kodundan biridir. Bu kodun 404 gibi hatalarla bir araya geldiğini anlarsanız, neler olduğunu da anlamaya başlarsınız.

Kısacası, 4XX hatalarının tümü istemci ya da sunucunun ihtiyaç duyduğu bir şeyin eksik olmasıyla ilgilidir. Hatanın tam adı – “415 Desteklenmeyen Medya Türü” – oyunu ele verir. Sunucu, tanımadığı veya kabul edemediği bir medya dosyası türü almaktadır.

Çoğu durumda, bir uygulama programlama arayüzü (API) kullandığınızda “HTTP 415” hatasını görürsünüz. Bu, sunucu taraflı bir sorundur ve daha sonra bunun ilk etapta neden olduğunu tartışacağız.

HTTP 415 Hatası Neden Oluşur?

Adına ne derseniz deyin – “HTTP 415” hatası, “415 Desteklenmeyen Medya Türü” hatası – bu, sunucunun tarayıcıdan gelen bir isteği kabul etmeyi reddettiği anlamına gelir. Bunun nedeni genellikle tarayıcının gönderdiği şeyin (yük) doğru formatta olmamasıdır.

Bu, “422 İşlenemez Varlık” hatasına benzer bir sorundur, çünkü her ikisi de sunucuya yanlış verilerin ulaşması ve sunucunun çıldırması ile ilgilidir. Ayrıca, tarayıcının gönderdiği veriler ile sunucunun aldığı veriler arasında bir ayrım olduğunu da belirtmek gerekir. Bunlar aynı gibi görünebilir, ancak aralarında fark vardır.

Örneğin, genel bir hata yakalama stratejisi, bir kullanıcının tanınmayan bir dosya türünü alıp yalnızca PNG’leri kabul eden bir arayüz üzerinden yüklemesini engelleyecektir. Ancak, bir sunucunun işleyebileceği medya türlerini tam olarak belirtmezseniz, arka uçta bir hatayı tetikleyecektir. Ön uçta ise kullanıcı hiçbir şey göremeyebilir. WordPress kullanıcıları bir yönetici ekranı bildirimi alır:

İyi haber şu ki WordPress’in izin veren bir altyapısı var – örneğin Medya Kitaplığı’na yükleyebileceğiniz farklı dosya türlerini düşünün?!

Yine de, bu kullanıcı hatasından ziyade geliştirici düzeyinde bir sorundur. Bu nedenle, bir sonraki düzeltmenin ne olabileceğine bakacağız.

HTTP 415 Hatası Nasıl Giderilir

Özetlemek gerekirse, “HTTP 415” hatası size sunucunun bir dosya türünü kabul etmediğini çünkü bu yükü desteklemediğini söyler. Bu, altta yatan PHP kodunda düzeltilmesi gereken bir sorun olduğu anlamına gelir.

Bu noktada, sitenin veya temanın geliştiricisi değilseniz ve herhangi bir kodlama beceriniz yoksa, muhtemelen uzman biriyle iletişime geçmek isteyeceksiniz. Temanızın dosyalarını kurcalamak bir soruna neden olabilir.

Ancak, hatayla ilgili Mozilla belgeleri, aramanıza başlamanız için size iki ipucu verir – iki ‘temsil başlığı’: Content-Type ve Content-Encoding.

Content-Type ve Content-Encoding Başlıkları Nasıl Çalışır?

Content-Type başlığı Herhangi bir kodlama gerçekleşmeden önce istemci isteğine kaynak sağlar. Kaynağın orijinal ortam türünü gösterir. Örneğin:

Content-Type: text/html; charset=UTF-8

Content-Type: image/jpeg;

Buna karşılık, Content-Encoding, yükün (yani medyanızın) sahip olduğu tüm kodlamaların bir listesidir ve orijinal yükü elde etmek için dosyanın kodunun nasıl çözülmesi gerektiğinin bir göstergesidir.

content-type: gzip

transfer-encoding: br

Anlayabileceğiniz gibi, dosya sıkıştırma verileri kodlamanın yaygın bir yoludur. Bu teoride bir sorun değildir, ancak bunu temanız veya eklentiniz için ilgili dosyalara kodlamazsanız sorun olacaktır.

HTTP 415 Hata Kodu İçin Bir Çözüm Bulmak

Yukarıdakiler göz önüne alındığında, bir HTTP 415 hatasıyla karşılaştığınızda keşfetmeniz gereken üç yol vardır – bunların hepsi PHP kodunuzla ilgilidir:

  • Doğru Content-Type başlık değerini gönderdiğinizden emin olmak isteyeceksiniz.
  • Ayrıca, aşağıdakilerden de emin olmak isteyeceksiniz sunucu Content-Type başlığı için belirttiğiniz her şeyi işleyebilir.
  • Sunucunun Accept başlığı aracılığıyla neleri işleyebileceğini kontrol edin.

Bunu çekirdek dosyalar içinde yapmanız gerekmez, ancak bir REST API isteğinin parçası olarak yapabilirsiniz. Örneğin, bir Stack Overflow’dan kullanıcı API isteği yapmak için cURL üzerinden saf PHP kullanırken tam olarak bu sorunu yaşadım.

Bakılması gereken iki yer vardır. İlk olarak, Content-Type başlığı içinde doğru dosya türlerini belirtin:

$headers = dizi (

‘Content-Type’ => ‘application/json’,

İkinci olarak, bu kullanıcı wp_remote_post() işlevini kullanarak geçersiz bir başlık anahtarı bildirirken bir yazım hatası yapmıştır:

$arg = dizi (

‘header’ => $headers,

“header” “s” harfini atladığı için “HTTP 415” hatasını verecektir. Bununla birlikte, aynı zamanda şundan da emin olmak isteyeceksiniz müşteri doğru dosya türlerini de kabul edebilir. Bunu başka bir başlık aracılığıyla yapacaksınız: Kabul et. Örneğin:

Accept: text/html

Kabul et: image/*

Bu, zincirin her iki ucunun da – istemci ve sunucu tarafı – doğru dosya türlerini kabul edip gönderebilmesini sağlar ve “HTTP 415” hatasına temelli olarak son verir.

Özet

Çözüm, sunucuya doğru olanı gönderdiğinizden emin olmak için Content-Type başlık değerleriyle çalışmaktır. Basit bir yazım hatası da olabilir. Bu bir “doh” anı gibi görünüyor, ancak bu durumda, özellikle de endişeniz sunucuya gönderdiğiniz içerik türleriyle ilgiliyse, tespit edilmesi zor olabilir.

Bu yazı son 15 günde 313 kez ziyaret edilmiş.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir