Mediumcorssecurity

Что такое CORF/CORS?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

CORS (Cross-Origin Resource Sharing) — механизм браузера для контроля cross-origin запросов. Same-origin policy: браузер запрещает JS читать ответы с других доменов. CORS через response headers.

# FastAPI
from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=['https://example.com'],
    allow_credentials=True,
    allow_methods=['*'],
    allow_headers=['*'],
)

Headers:

  • Access-Control-Allow-Origin — какой origin разрешён;
  • Access-Control-Allow-Methods (GET, POST, ...), Allow-Headers;
  • Access-Control-Allow-Credentials (cookies).

Preflight request: для не-simple requests браузер сначала отправляет OPTIONS с Request-*, сервер отвечает Allow-*. Без правильного CORS — браузер блокирует, ошибка в JS console.

В Django: django-cors-headers. CSRF — другой механизм, для форм (не API).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.