Для будь-якого сайту важливо правильно налаштувати заголовки HTTP. На тему заголовків було написано багато статей. Тут ми узагальнили накопичений досвід, документацію RFC. Якісь із заголовків обов'язкові, якісь застарілі, якісь можуть вносити плутанину та протиріччя. Ми зробили пузомірку для
- встановити значення типових заголовків;
- додати свої довільні заголовки;
- вказати версію HTTP-протоколу: 1.0, 1.1, 2 (перевіряє чи підтримується HTTP/2);
- вказати метод запиту, час очікування та дані postdata для надсилання на сервер;
- також пузомірка перевіряє коректність відповіді запити If-Modified-Since, If-None-Match, якщо у відповіді сервера є Last-Modified або ETag.
Чи не претендуємо на істинність в останній інстанції. Для окремого контенту та окремих проектів, звісно, може бути відступу. Але цей сервіс точно підкаже, на що варто звернути увагу, можливо вам буде корисно відредагувати свої заголовки. Далі перелік того на що звертає увагу сервіс перевірки. Чому так читайте
Обов'язкові заголовки
- Дата
- Content-Type із зазначенням charset для текстового контенту бажано utf-8
- Content-Encoding стиск для текстового контенту
Застарілі та непотрібні заголовки
- Server з детальною версією веб-сервера
- X-Power-By
- X_ASPNET-Version
- Закінчується
- Pragma
- P3P
- через
- X-UA-сумісний
Бажані заголовки для безпеки
- X-Content-Type-Options
- X-XSS-захист
- Строгий-Транспорт-Безпека
- Політика реферера
- Feature-Policy
- Content-Security-Policy або Content-Security-Policy-Report-Only для заборони вбудованих скриптів та стилів.
Заголовки для кешування
Обов'язкові для статичного контенту з великим терміном кешування і дуже бажані динамічного контенту з невеликим терміном кешування.
- Остання змінена
- ETtag
- Cache-Control
- змінюватися
- Важливо, щоб сервер коректно відповідав на заголовки: If-Modified-Since та If-None-Match
HTTP / 2
Зараз сервер має підтримувати HTTP/2. За замовчуванням сервіс перевіряє роботу сервера HTTP/2. Якщо ваш сервер не підтримує HTTP/2, вибирайте HTTP/1.1.
Джерело: habr.com