Ответ
CORS (Cross-Origin Resource Sharing) — механизм, разрешающий запросы между разными доменами. Сервер указывает в заголовках (Access-Control-Allow-Origin), какие источники могут к нему обращаться. Например:
Access-Control-Allow-Origin: https://example.com
CSP (Content Security Policy) — защита от XSS и других атак, ограничивающая загрузку ресурсов (скриптов, стилей и т.д.). Задается через HTTP-заголовок или метатег:
Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline'
Разница:
- CORS контролирует кросс-доменные запросы
- CSP ограничивает источники загружаемого контента на странице
Ответ 18+ 🔞
Да ты посмотри, какая интересная парочка подъехала! Сидят два этих, блядь, стража порядка веб-приложений, а народ их постоянно путает, как будто это один и тот же мудак в двух пиджаках.
Ну вот смотри, первый — это CORS. Его главная задача — стоять на границе и решать, кто может зайти с другого участка. Представь, твой сайт — это такой элитный клуб. И вот приходит запрос с какого-нибудь левого адреса, типа https://левая-шалава.com. CORS такой выходит, смотрит в свой список и говорит: «А ты, сука, кто? А, нет тебя в белом списке, пошёл нахуй!». Или наоборот: «О, https://example.com, заходи, дорогой, вот тебе пропуск» — и выдаёт в заголовках эту самую бумажку:
Access-Control-Allow-Origin: https://example.com
Короче, он решает вопросы между разными домами, чтобы один домен мог легально потырить данные у другого. Без него — сплошной пиздец и ошибки в консоли.
А второй страж — это CSP, он уже внутри клуба работает. Его волнует не «откуда пришёл», а «что этот пришедший гость с собой тащит». Он смотрит: «Опа, чувак, а это что у тебя? Скрипт с какого-то левого сервака? Нахуй! Стили с непонятного CDN? Нахуй!». Он контролирует, откуда страница может грузить всякую хуйню: скрипты, стили, картинки. И объявляет это вот так, как указ:
Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline'
То есть, по умолчанию всё грузи только от себя, а скрипты можно из своих же файлов или, в крайнем случае, инлайновые, но это уже, блядь, 'unsafe-inline', на свой страх и риск.
Итог, чтобы не ебать мозг:
- CORS — это про то, может ли внешний сайт спросить что-то у твоего сервера. Вопрос доверия между разными доменами.
- CSP — это про то, что твоя страница может загружать и выполнять у себя. Вопрос безопасности от всяких встраиваемых пиздюлей и XSS-атак.
Вот и вся магия, ёпта. Один следит за границами, другой — за порядком внутри. А вместе они, блядь, как два мента в одной машине, создают видимость безопасности в этом диком вебе.