CORS (Cross-Origin Resource Sharing)
CORS (Cross-Origin Resource Sharing) — это механизм, который позволяет веб-страницам запрашивать ресурсы с другого домена, отличного от того, с которого была загружена сама страница. Это важно для безопасности, так как браузеры по умолчанию блокируют запросы между разными доменами (из-за политики одного источника — Same-Origin Policy).
Как работает CORS:
- Запрос с другого домена: Когда веб-страница пытается сделать запрос (например, через
fetch
илиXMLHttpRequest
) к другому домену, браузер отправляет предварительный запрос (preflight request) с методомOPTIONS
, чтобы проверить, разрешён ли доступ. - Ответ сервера: Сервер должен ответить с заголовками, указывающими, какие домены, методы и заголовки разрешены. Например:
Access-Control-Allow-Origin
: Указывает, с каких доменов разрешены запросы.Access-Control-Allow-Methods
: Указывает разрешённые HTTP-методы (например, GET, POST).Access-Control-Allow-Headers
: Указывает разрешённые заголовки.
- Доступ к ресурсу: Если сервер разрешает запрос, браузер выполняет основной запрос и возвращает данные.
Пример заголовков CORS:
Access-Control-Allow-Origin: *
— разрешает запросы с любого домена.Access-Control-Allow-Origin: https://example.com
— разрешает запросы только с доменаhttps://example.com
.
Зачем нужен CORS:
- Без CORS браузеры блокируют запросы к другим доменам, чтобы предотвратить утечку данных или атаки, такие как CSRF (Cross-Site Request Forgery).
- CORS позволяет безопасно взаимодействовать с API на других доменах.
Проблемы с CORS:
- Если сервер не настроен правильно, браузер заблокирует запрос, и вы получите ошибку, например:
Access to fetch at 'https://example.com' from origin 'https://your-site.com' has been blocked by CORS policy.
- Для решения проблем с CORS нужно правильно настроить сервер или использовать прокси-сервер.