Opis problemu:
Na stronie internetowej wydawcy reklamy nie były wyświetlane, a w konsoli przeglądarki pojawiał się błąd:
Refused to display 'https://mediaboxy.pl' in a frame because it set 'X-Frame-Options' to 'deny'.
Komunikat ten oznaczał, że przeglądarka zablokowała wyświetlenie treści osadzanej w iframe, ponieważ serwer zwracał nagłówek X-Frame-Options z wartością DENY.
Co to jest X-Frame-Options? X-Frame-Options to nagłówek HTTP służący do ochrony strony przed atakami typu clickjacking. Określa on, czy dana strona może być osadzana w ramce iframe na innej stronie.
DENY – całkowicie blokuje wyświetlanie strony w iframe
SAMEORIGIN – pozwala na osadzanie iframe tylko w obrębie tej samej domeny
W przypadku systemów reklamowych, które wykorzystują iframe do wyświetlania treści (np. MediaBoxy), zbyt restrykcyjne ustawienie tego nagłówka powoduje blokadę reklam i ich całkowity brak na stronie internetowej wydawcy.
Rozwiązanie:
Usuń lub zmień X-Frame-Options w .htaccess.
Jeśli masz w swoim .htaccess linijkę:
Header set X-Frame-Options "DENY"
Usuń ją całkowicie lub zostaw zakomentowaną:
# Header set X-Frame-Options "DENY"
Wnioski:
Problem z niewyświetlaniem reklam był bezpośrednio związany z restrykcyjnym nagłówkiem X-Frame-Options ustawionym na DENY, który całkowicie uniemożliwiał osadzanie treści w iframe. Choć mechanizm ten skutecznie chroni stronę przed atakami typu clickjacking, w przypadku integracji z zewnętrznymi systemami reklamowymi – takimi jak MediaBoxy – prowadzi do pełnej blokady reklam.
Usunięcie lub wyłączenie nagłówka X-Frame-Options rozwiązało problem i przywróciło poprawne wyświetlanie reklam. Jednocześnie zachowanie bezpieczeństwa strony jest możliwe dzięki zastosowaniu nowoczesnej polityki Content Security Policy (CSP) z dyrektywą frame-ancestors, która zapewnia bardziej elastyczną i precyzyjną kontrolę nad osadzaniem iframe niż przestarzały nagłówek X-Frame-Options.