X-Content-Type-Options: почему nosniff требует правильного MIME-типа
Заголовок X-Content-Type-Options со значением nosniff ограничивает угадывание типа содержимого браузером. Правильный Content-Type при этом остаётся обязанностью сервера.
Назначение
Заголовок X-Content-Type-Options со значением nosniff ограничивает угадывание типа содержимого браузером. Правильный Content-Type при этом остаётся обязанностью сервера.
Как это работает
Для загрузки таблицы стилей браузер ожидает text/css. Если вместо CSS сервер вернул HTML-страницу, nosniff помогает заблокировать неверный ресурс. Сам заголовок не проверяет качество кода и не превращает HTML в CSS.
Пример
HTTP/1.1 200 OK
Content-Type: text/css; charset=utf-8
X-Content-Type-Options: nosniff
body { color: #20352a; }
Что должно получиться
Это схематичный ответ для файла стилей. При корректном адресе и отсутствии других блокировок браузер может применить CSS. Заголовки устанавливаются сервером; их не вставляют в начало файла style.css.
Граница применения и частая ошибка
Ошибка MIME-типа часто вызвана неправильным URL или маршрутизацией, которая отдаёт страницу ошибки со статусом 200. Не лечите её удалением nosniff: сначала проверьте статус, Content-Type и первые строки тела ответа.
Самостоятельная проверка
В своём тестовом проекте откройте CSS-запрос в Network и сопоставьте Headers с Response. Затем намеренно испортите путь в link. Объясните, почему доступность ответа с кодом 200 сама по себе не подтверждает загрузку стилей.