Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

MIME türü yanlış gönderilen dosyalar nasıl düzeltilir?​


MIME türü yanlış gönderilen bir dosyayı düzeltmek için önce sunucunun yanıtındaki Content-Type başlığını kontrol edin, ardından dosya uzantısını doğru MIME türüyle eşleştiren web sunucusu veya uygulama ayarını düzeltin. Önce yanıtın gerçekten beklenen dosya olduğundan emin olun; ardından gereken katmandaki önbelleği geçersiz kılıp yeni yanıtı doğrulayın. Dosyanın içeriğini değiştirmek çoğu durumda çözüm değildir; sorun, dosyanın istemciye hangi türde tanıtıldığıdır.

MIME türü nasıl çalışır?​


Tarayıcı, indirilen veya çağrılan dosyanın nasıl işleneceğini HTTP yanıtındaki Content-Type değerine göre belirler. Örneğin JavaScript dosyası text/javascript, CSS dosyası text/css, SVG dosyası image/svg+xml ve WebP görseli image/webp olarak gönderilmelidir.

Dosya sunucudan text/plain, application/octet-stream veya tamamen ilgisiz bir türle gönderiliyorsa tarayıcı dosyayı çalıştırmayabilir, biçimlendirmeyi uygulamayabilir ya da görseli göstermeyebilir. Özellikle X-Content-Type-Options: nosniff kullanıldığında tarayıcı, yanlış türdeki bazı kaynakları tahmin ederek çalıştırmak yerine reddeder.

Önce hatayı doğrulayın​


Dosyanın gerçekten hangi başlıkla gönderildiğini kontrol etmek için terminalde şu komutu çalıştırın:

Kod:
curl -I https://example.com/path/to/file.ext

Çıktıda şu satıra bakın:

Kod:
Content-Type: text/css

Örneğin .css dosyası için application/octet-stream görülüyorsa MIME eşlemesi eksik veya yanlış yapılandırılmıştır. Yanıt 301 ya da 302 ise önce yönlendirmenin son adresini inceleyin; -L seçeneğiyle son yanıtı da görebilirsiniz:

Kod:
curl -I -L https://example.com/path/to/file.ext

Tarayıcı geliştirici araçlarında Network panelinden aynı dosyayı seçerek Response Headers bölümünü kontrol etmek de yararlıdır. Yanıt 404 ise veya gövdesi giriş sayfası/SPA HTML çıktısıysa önce yönlendirme, yetki ve dosya yolunu düzeltin; HTML hata gövdesine text/css ya da JavaScript türü zorlamayın. HTML kaynağında görünen type özniteliği, sunucunun HTTP başlığını düzeltmez; asıl kontrol edilmesi gereken yanıt başlığıdır.

BelirtiMuhtemel kaynakİlk düzeltme
Tüm statik dosyalarda yanlış türWeb sunucusu MIME eşlemesiApache veya Nginx yapılandırmasını kontrol edin
Yalnız bir uzantı yanlışÖzel uzantı ya da eksik eşlemeUzantıyı doğru types veya AddType kuralına ekleyin
Yalnız indirme uç noktası yanlışUygulama veya framework yanıtıContent-Type başlığını uygulama kodunda düzeltin
Değişiklikten sonra eski sonuçCDN, proxy veya tarayıcı önbelleğiÖnbelleği temizleyip yeni yanıtı yeniden doğrulayın

Sunucu ayarını düzeltme​


Apache kullanıyorsanız, ilgili sanal host yapılandırmasına veya izin verilen durumlarda site kökündeki .htaccess dosyasına doğru türleri ekleyebilirsiniz:

Kod:
AddType text/css .css
AddType text/javascript .js
AddType application/json .json
AddType image/svg+xml .svg
AddType image/webp .webp

Sanalhost/ana yapılandırmayı değiştirdiyseniz doğru yetkiyle apachectl configtest uygulayıp başarıdan sonra reload yapın. .htaccess ise istek sırasında okunur; bu dosyada değişiklik için ayrıca reload gerekmez, fakat ilgili URL’yi isteyerek sonucu doğrulamalısınız. .htaccess içinde hata oluşursa sunucu 500 yanıtı verebilir; bu durumda ilgili satırları geri alıp hata günlüğünü inceleyin. Paylaşımlı hosting ortamında AddType kullanımına izin verilmiyorsa hosting yöneticisinden MIME eşlemesinin tanımlanmasını istemeniz gerekir.

Nginx kullanıyorsanız MIME türleri genellikle mime.types dosyasından yüklenir. Sunucu yapılandırmasında aşağıdaki yapının mevcut olduğundan emin olun:

Kod:
http {
    include mime.types;
    default_type application/octet-stream;
}

Eksik bir eşleme varsa mevcut mime.types dosyasındaki types tablosuna doğru satırı ekleyin; aynı uzantıyı gereksiz yere iki kez tanımlamayın. Örneğin wasm için tablo içinde kullanılacak satır şöyledir:

Kod:
application/wasm wasm;

Bu satır tek başına ana yapılandırmaya yazılmaz; mevcut types bloğunun içinde olmalıdır. Alt server/location düzeyinde yalnız birkaç tür içeren yeni bir types tanımlamak, üst düzey tablonun yerine geçerek başka uzantıları etkileyebilir. Değişen yapılandırmanın kopyasını koruyun; panel yönetimli dosyalarda desteklenen düzenleme yolunu kullanın. Yeniden yüklemeden önce doğru yapılandırma ve gerekli okuma yetkisiyle test edin:

Kod:
nginx -t

Beklenen başarı çıktısı yapılandırmanın sözdiziminin geçerli olduğunu belirten bir mesajdır. Test başarısız olursa yeniden yükleme yapmayın; hata satırını düzeltin ve testi tekrarlayın. Başarılı testten sonra Nginx’i yeniden yükleyip curl -I ile aynı dosyayı tekrar kontrol edin.

Hangi katmanı düzeltmelisiniz?​


Sorunun kaynağını seçerken dosyanın nereden üretildiğini ayırın:

Uygulama bir dosyayı kendisi üretiyor veya sunuyorsa web sunucusundaki eşleme yeterli olmayabilir. Bu durumda yanıtın Content-Type başlığını uygulamanın ilgili indirme, API veya medya uç noktasında ayarlayın. JSON yanıtını dosya indirmesi olarak sunmak istiyorsanız Content-Disposition davranışını da ayrıca belirleyin; bu başlık MIME türünün yerine geçmez.

Sık yapılan hatalar​


  • Yalnızca HTML içindeki script type veya link özniteliğini değiştirmek: Bu, sunucunun gönderdiği başlığı düzeltmez.
  • Her dosyayı application/octet-stream yapmak: Bu, bilinmeyen dosyaların indirilmesini sağlayabilir ancak CSS, JavaScript, font ve medya dosyaları için doğru çözüm değildir.
  • Uzantıyı değiştirmek: Dosya içeriğiyle uzantı ve MIME türü birbirini tutmuyorsa istemci tarafında yeni hatalar oluşur.
  • Yalnızca tarayıcı önbelleğini temizlemek: Sunucu yanıtı hâlâ yanlışsa sorun yeniden ortaya çıkar.
  • CDN veya proxy katmanını kontrol etmemek: Origin sunucusu düzelmiş olsa bile ara katman eski başlığı önbellekten verebilir.

Son kontrolde dosyanın HTTP durum kodu başarılı olmalı, Content-Type beklenen değerle eşleşmeli ve tarayıcı geliştirici araçlarında MIME kaynaklı bir engelleme görünmemelidir. Değer hâlâ yanlışsa dosyanın geçtiği katmanları sırayla izleyin: uygulama, web sunucusu, proxy/CDN ve tarayıcı önbelleği.

Sık sorulan sorular​


MIME türü ile dosya uzantısı aynı şey midir?​


Hayır. Uzantı sunucunun eşleme yapmasına yardımcı olur; istemciye bildirilen gerçek değer HTTP Content-Type başlığıdır. Uzantı doğru olsa bile sunucu yanlış başlık gönderebilir.

curl -I doğru görünürken tarayıcı neden yine reddeder?​

curl -I bir HEAD isteğidir. Uygulama HEAD ve GET için farklı davranabilir; tarayıcının gerçek GET yanıtındaki durum, Content-Type, yönlendirme ve gövdeyi Network’te kontrol edin. Gerekirse GET başlıklarını curl -sS -L -D - -o /dev/null URL ile inceleyin; /dev/null yolu Linux içindir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.