Sprawdzanie nagłówków HTTP
Analiza nagłówków odpowiedzi HTTP: bezpieczeństwo, cache, kompresja, CORS.
Sprawdzanie nagłówków HTTP — Bezpieczeństwo i buforowanie
Sprawdź nagłówki odpowiedzi HTTP: nagłówki bezpieczeństwa (CSP, HSTS, X-Frame-Options), cache i kompresję. Procentowa ocena obecności nagłówków bezpieczeństwa i pełna lista nagłówków, w tym X-Robots-Tag.
Jak korzystać
- Wpisz URL do sprawdzenia nagłówków
- Kliknij „Sprawdź” do analizy
- Sprawdź ocenę bezpieczeństwa i listę nagłówków
Use Cases
- Szybki security-check nagłówków na dev/staging/prod.
- Weryfikacja polityki cache i CORS dla stron oraz API.
Limitations
- Pokazuje nagłówki dla jednego URL, a nie całej struktury.
- Część nagłówków dodawana jest tylko na edge/CDN i zależy od ścieżki.
Example Input / Output
https://example.com
Security score B: brak Content-Security-Policy i X-Frame-Options.
FAQ
Sprawdzanie nagłówków HTTP: co pokazuje raport
Narzędzie wysyła pod podany adres zwykłe żądanie GET (nie HEAD), podąża za przekierowaniami — do 10 kroków — i pokazuje nagłówki ostatecznej odpowiedzi. Sam łańcuch przekierowań nie jest wyświetlany; każdy krok z kodem statusu zobaczysz w sprawdzaniu przekierowań.
Raport ma cztery części: przegląd (status HTTP, czas odpowiedzi, HTTPS lub HTTP, liczba nagłówków i wartość Server), „Nagłówki bezpieczeństwa”, pełną tabelę „Wszystkie nagłówki odpowiedzi” oraz „Cache i wydajność”.
Żądanie wychodzi z User-Agentem PromoPilot SEO Tools. Jeśli strona stoi za WAF-em lub ochroną antybotową, możesz zobaczyć status 403 lub 503 i nagłówki strony z wyzwaniem zamiast prawdziwej odpowiedzi. Wtedy porównaj wynik z poleceniami curl poniżej.
Jak liczona jest ocena bezpieczeństwa
| Test | Punkty |
|---|---|
| Docelowy adres działa przez HTTPS | 20 |
| Strict-Transport-Security | 15 |
| Content-Security-Policy | 15 |
| X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy | po 10 |
| X-XSS-Protection, X-Permitted-Cross-Domain-Policies | po 5 |
Liczy się tylko obecność nagłówka, a nie jego wartość. Strict-Transport-Security: max-age=0 albo CSP z 'unsafe-inline' dostaną pełną pulę, choć chronią niewiele. Natomiast polityka wysłana jako Content-Security-Policy-Report-Only nie jest liczona wcale, bo narzędzie szuka dokładnej nazwy nagłówka. Dlatego czytaj wartości — są wypisane pod każdym znalezionym nagłówkiem.
Jakie wartości nagłówków bezpieczeństwa ustawić
| Nagłówek | Wartość robocza | Uwagi |
|---|---|---|
| Strict-Transport-Security | max-age=31536000; includeSubDomains | Włączaj dopiero, gdy wszystkie subdomeny działają po HTTPS; zacznij od krótkiego max-age |
| X-Content-Type-Options | nosniff | Jedyna poprawna wartość |
| X-Frame-Options | SAMEORIGIN lub DENY | Nowocześniejszy odpowiednik to dyrektywa CSP frame-ancestors |
| Referrer-Policy | strict-origin-when-cross-origin | Inne strony widzą Twoją domenę, ale nie ścieżkę i parametry |
| Permissions-Policy | camera=(), microphone=(), geolocation=() | Wyłącz API, z których strona nie korzysta |
| Content-Security-Policy | Zależy od strony | Najpierw wdroż jako Report-Only, zbierz naruszenia, potem egzekwuj |
| X-XSS-Protection | 0 | Filtr usunięto z nowoczesnych przeglądarek; narzędzie daje punkty za każdą wartość, zalecana to 0 |
nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
Pułapka nginx: jeśli blok location ma choć jedną własną dyrektywę add_header, nie dziedziczy żadnej z poziomu server. Efekt: nagłówki są na stronie głównej, a znikają na plikach statycznych lub w jednej sekcji. Sprawdź kilka różnych adresów.
Apache i .htaccess
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
WordPress i platformy hostowane
W WordPressie nagłówki najprościej ustawić w .htaccess lub konfiguracji serwera. Z kodu motywu działa hook send_headers z funkcją header(), ale tylko dla odpowiedzi generowanych przez PHP — obrazy i pliki statyczne ich nie dostaną. Na platformach takich jak Shoper, Wix czy Shopify konfiguracji serwera nie zmienisz; własne nagłówki doda tylko proxy przed stroną, np. reguły modyfikacji nagłówków odpowiedzi w Cloudflare.
Typowe problemy widoczne w raporcie
- Ten sam nagłówek dwa razy. Dwa wiersze
X-Frame-OptionslubCache-Controlz różnymi wartościami oznaczają, że dodaje je i CMS, i serwer (albo serwer i CDN). Przeglądarki reagują wtedy nieprzewidywalnie — zostaw jedno źródło. - Wersja oprogramowania na widoku.
Server: nginx/1.18.0czyX-Powered-By: PHP/7.4podpowiadają atakującemu, jakie luki sprawdzić. W nginx wersję ukrywaserver_tokens off;, w PHP —expose_php = Off. - HSTS w odpowiedzi HTTP. Przeglądarki przyjmują Strict-Transport-Security tylko przez HTTPS; w odpowiedzi po HTTP nic nie daje.
- Nagłówki znikają przy błędach. Bez parametru
alwaysnginx nie dodaje nagłówków do odpowiedzi 4xx i 5xx. Przy okazji sprawdź nieistniejący adres: powinien zwracać 404, a nie 200. - Cache CDN. Nagłówki takie jak
cf-cache-status,X-CacheiAgepokazują, czy strona przyszła z cache CDN, czy z Twojego serwera.
Ocenę literową od A do F dla tego samego zestawu nagłówków bezpieczeństwa daje osobne narzędzie — sprawdzanie nagłówków bezpieczeństwa.
Nagłówki cache i kompresji
- Strony HTML zwykle wysyła się z
Cache-Control: no-cachelub krótkimmax-age, żeby zmiany były widoczne od razu. - Pliki statyczne z hashem w nazwie —
Cache-Control: public, max-age=31536000, immutable. - ETag i Last-Modified pozwalają odpowiadać
304 Not Modified. Google informował, że jego roboty obsługują takie żądania warunkowe, co oszczędza budżet indeksowania dużych serwisów. - Content-Encoding: narzędzie deklaruje, że przyjmuje skompresowane odpowiedzi, więc brak nagłówka zwykle oznacza HTML bez gzip i Brotli. Szczegóły pokaże sprawdzanie kompresji.
- Vary: Accept-Encoding jest potrzebny przy kompresji, żeby CDN nie podał skompresowanej wersji klientowi, który jej nie obsługuje.
X-Robots-Tag i inne nagłówki ważne dla SEO
Narzędzie ich nie ocenia, ale znajdziesz je w tabeli „Wszystkie nagłówki odpowiedzi”:
- X-Robots-Tag: noindex wyklucza stronę z indeksu tak samo jak meta robots — nawet jeśli HTML jest w porządku. Częsta przyczyna to reguła ze środowiska testowego przeniesiona na produkcję. Więcej w dokumentacji Google.
- Link: <…>; rel="canonical" — adres kanoniczny dla PDF i innych plików bez HTML.
- Content-Type z
charset=utf-8— bez kodowania w opisie wyniku mogą pojawić się „krzaki” zamiast polskich znaków. - Set-Cookie w każdej odpowiedzi utrudnia cache w CDN.
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow";
}
Które adresy sprawdzić
Nagłówki ustawiają reguły serwera, CMS i CDN, więc na różnych adresach często się różnią. Dla pełnego obrazu sprawdź pięć–sześć URL: stronę główną, kategorię, kartę produktu lub artykuł, dowolny plik CSS albo obraz, PDF (jeśli jest) i celowo nieistniejącą stronę. Różnice między nimi to gotowa lista poprawek.
Sprawdzanie nagłówków przez curl -I i DevTools
# Same nagłówki (żądanie HEAD)
curl -I https://example.com/
# Nagłówki zwykłego GET z przejściem przez wszystkie przekierowania
curl -sSL -D - -o /dev/null https://example.com/
# Czy serwer wysyła Brotli lub gzip
curl -sI -H "Accept-Encoding: br, gzip" https://example.com/ | grep -i content-encoding
curl -I wysyła HEAD, a część serwerów i CDN odpowiada na HEAD inaczej niż na GET — przy rozbieżnościach ufaj drugiemu poleceniu. W przeglądarce te same dane znajdziesz w DevTools: Network → żądanie dokumentu → Headers.
Jeśli chodziło Ci o nagłówki H1–H6 w treści strony, to inne zadanie — strukturę nagłówków pokaże analiza on-page.
Popraw pozycje w wyszukiwarce
Problemy SEO mogą kosztować Cię ruch. Kaskadowy link building poprawi widoczność strony w wyszukiwarce.