Весной стартует сезон найма, успей отхватить свой оффер!

Что такое CORS и как он работает?

Что такое CORS?

CORS (Cross-Origin Resource Sharing) — это механизм безопасности в веб-разработке, который позволяет или запрещает веб-браузерам делать запросы на серверы, находящиеся на другом домене. Это важно для обеспечения безопасности веб-приложений, особенно когда приложение взаимодействует с ресурсами на сторонних серверах.

Когда веб-браузер пытается выполнить запрос на сервер, расположенный на другом домене, он должен проверить, разрешено ли это запросом сервером. Это проверка называется "политикой того, откуда могут быть получены ресурсы".

Почему CORS нужен?

CORS был введен для решения проблемы "междоменных запросов" в веб-браузерах. Веб-браузеры по умолчанию не позволяют веб-страницам делать запросы к ресурсам, расположенным на других доменах, по причинам безопасности. Это предотвращает атаки, такие как Cross-Site Request Forgery (CSRF) и Cross-Site Scripting (XSS).

Например, если веб-страница с домена example.com попытается запросить данные с сервера another-domain.com, браузер по умолчанию заблокирует такой запрос, если только сервер another-domain.com не указал, что он разрешает доступ с другого домена.

Как работает CORS?

Когда браузер отправляет запрос с другого домена (например, через AJAX или Fetch), он автоматически добавляет заголовок Origin, который указывает на домен, с которого был сделан запрос. Сервер, получающий запрос, проверяет этот заголовок и решает, разрешить ли доступ к своим ресурсам с этого домена.

  1. Заголовок Origin:
    Это заголовок, который отправляется с запросом и указывает домен, с которого был сделан запрос. Сервер должен проверить этот заголовок и решить, разрешать ли доступ.

  2. Ответ сервера:
    Если сервер разрешает доступ из определённых источников, он отправляет заголовки Access-Control-Allow-Origin в ответ. Этот заголовок указывает, какие домены могут получить доступ к данным.

    Пример заголовка ответа:
    Access-Control-Allow-Origin: https://example.com Это значит, что доступ к ресурсу разрешён только с домена example.com.

  3. Типы запросов:

  • Preflight request (предварительный запрос):
    Если запрос использует нестандартные методы (например, PUT, DELETE) или заголовки, браузер сначала отправляет OPTIONS запрос (предварительный запрос) на сервер, чтобы узнать, разрешает ли сервер такой запрос.

  • Simple request (простые запросы):
    Если запрос использует стандартные методы (GET, POST, HEAD) и стандартные заголовки, сервер может сразу отправить разрешение.

  1. Ответ на предварительный запрос: Если запрос предварительный (OPTIONS), сервер отвечает с заголовками, которые разрешают или запрещают такие запросы, например: Access-Control-Allow-Methods: GET, POST Access-Control-Allow-Headers: Content-Type Access-Control-Allow-Origin: https://example.com

Преимущества и ограничения CORS

  • Преимущества:
    • Защита данных: CORS помогает защитить ресурсы на сервере от несанкционированного доступа с других доменов.
    • Гибкость: Сервер может настроить CORS таким образом, чтобы разрешить доступ только для определённых источников, что позволяет создавать более безопасные API.
  • Ограничения:
    • Ручная настройка на сервере: Для использования CORS сервер должен явно указать, что разрешает доступ с других доменов. Это требует дополнительных настроек на сервере.
    • Поддержка браузерами: CORS работает только в браузерах, которые поддерживают эту политику безопасности. Однако большинство современных браузеров поддерживают CORS.