ERR_BLOCKED_BY_RESPONSE Hatası Nedir? Nasıl Çözülür?

Sunucun 2 dk okuma

ERR_BLOCKED_BY_RESPONSE, tarayıcının bir sayfayı veya kaynağı, sunucunun gönderdiği yanıt başlıkları buna izin vermediği için engellediğini gösteren bir hatadır. En sık, bir site başka bir sitenin içine iframe ile yerleştirilmek istendiğinde görülür: çerçevenin içinde “… bağlanmayı reddetti” mesajı belirir ve konsolda net::ERR_BLOCKED_BY_RESPONSE yazar. Bu yazıda hatanın nedenlerini ve site sahipleri ile geliştiriciler için çözüm yollarını anlatıyoruz.

ERR_BLOCKED_BY_RESPONSE… konusunu anlatan çizim

ERR_BLOCKED_BY_RESPONSE Ne Demek?

Bu hata bir bağlantı sorunu değildir: istek sunucuya ulaşmış ve yanıt gelmiştir. Ancak yanıtta bulunan bir güvenlik başlığı, içeriğin bu bağlamda (ör. başka bir sitenin çerçevesinde) gösterilmesini yasaklar ve tarayıcı bu kurala uyar. Yani tarayıcı, sitenin kendi koyduğu güvenlik kuralını uygulamaktadır. Konsolda hata bazen ERR_BLOCKED_BY_RESPONSE.NotSameOrigin gibi ek bir açıklamayla görünür.

Hatanın Nedenleri

  • X-Frame-Options: Sayfa X-Frame-Options: DENY veya SAMEORIGIN başlığı gönderiyorsa başka sitelerin çerçevesinde açılmaz.
  • CSP frame-ancestors: Content-Security-Policy başlığındaki frame-ancestors yönergesi, sayfayı hangi sitelerin çerçeveleyebileceğini belirler.
  • Cross-Origin-Resource-Policy (CORP): Bir görsel, betik veya dosya same-origin ya da same-site politikasıyla sunuluyorsa başka sitelerden yüklenemez.
  • Cross-Origin-Embedder-Policy (COEP): Sayfanız require-corp politikası kullanıyorsa, izin başlığı göndermeyen dış kaynaklar engellenir.
  • Güvenlik eklentisi veya CDN kuralı: WordPress güvenlik eklentileri ve CDN ayarları bu başlıkları otomatik olarak ekleyebilir.

Ziyaretçi Olarak Ne Yapabilirsiniz?

Bu kural sitenin kendisi tarafından konduğu için ziyaretçi tarafında kalıcı bir çözüm yoktur. Çerçevenin içindeki içeriği görmek istiyorsanız bağlantıyı yeni bir sekmede doğrudan açın; sayfa normal şekilde yüklenir. Başlıkları kaldıran tarayıcı eklentileri önerilmez, çünkü bu başlıklar sizi tıklama hırsızlığı (clickjacking) gibi saldırılara karşı korur.

Site Sahibi ve Geliştirici Olarak Nasıl Çözülür?

1. Hangi Başlığın Engellediğini Bulun

Geliştirici araçlarının Ağ (Network) sekmesinde engellenen isteğe tıklayın ve Yanıt Başlıkları‘na bakın. Komut satırından da kontrol edebilirsiniz:

curl -sI https://alanadiniz.com/sayfa | grep -iE "x-frame-options|content-security-policy|cross-origin"

2. Çerçevelemeye Yalnızca Güvendiğiniz Sitelere İzin Verin

Kendi sayfanızın belirli bir sitede çerçeve içinde açılmasını istiyorsanız X-Frame-Options yerine CSP kullanın ve izin verilen siteleri açıkça yazın. Nginx için örnek:

add_header Content-Security-Policy "frame-ancestors 'self' https://izinli-site.com" always;

Aynı yanıtta X-Frame-Options: DENY de gönderiliyorsa onu kaldırın. Çerçevelemeye her siteye izin vermek (frame-ancestors *) tıklama hırsızlığı riskini artırır; yalnızca gerçekten ihtiyaç duyulan siteleri ekleyin.

3. Dış Kaynaklar İçin CORP Ayarını Düzeltin

Görsel veya dosyalarınızın başka sitelerde kullanılması gerekiyorsa, bu kaynakları Cross-Origin-Resource-Policy: cross-origin başlığıyla sunun. Sayfanızda COEP kullanıyorsanız, yüklediğiniz dış kaynakların bu başlığı göndermesi veya CORS ile yüklenmesi gerekir.

4. Başka Bir Sitenin Sayfasını Çerçeveleyemiyorsanız

Başlık başka bir sitenin sunucusundan geliyorsa onu siz değiştiremezsiniz. Bu durumda sitenin sunduğu resmi yerleştirme (embed) bağlantısını veya API’yi kullanın ya da içerik yerine bağlantı verin.

Konsolda CORS kaynaklı genel bir hata görüyorsanız ERR_FAILED rehberimize bakabilirsiniz.

Sonuç

ERR_BLOCKED_BY_RESPONSE, tarayıcının sitenin kendi güvenlik başlıklarına uyarak bir sayfayı veya kaynağı engellediğini gösterir. Ziyaretçi olarak sayfayı yeni sekmede açmak yeterlidir. Site sahibiyseniz X-Frame-Options, CSP frame-ancestors ve Cross-Origin-Resource-Policy başlıklarını ihtiyacınıza göre ve yalnızca güvendiğiniz sitelere izin verecek şekilde ayarlayın.

Kategoriler

Son yazılar