ОБМЕН РЕСУРСАМИ НЕЗАВИСИМОГО ПРОИСХОЖДЕНИЯ (CORS)

Обзор политики единого происхождения

С другой стороны, чтобы лучше понять CORS, также важно понять, что влечет за собой совместное использование ресурсов политики одинакового происхождения.

Что означает, что браузеры и веб-серверы имеют одно и то же происхождение?

Веб-браузеры и веб-ресурсы могут обмениваться содержимым и атрибутами, если они используют один и тот же протокол, номер порта и домен; следовательно, имея одно и то же происхождение.

Например, мы представляем себе веб-страницу, размещенную по адресу http://www.test.com/customer.html, где customer.html отображает информацию о клиенте, обращающемся к этой странице.

Что такое CORS

Совместное использование ресурсов между источниками — это рекомендуемая функция безопасности, необходимая для обеспечения безопасности пользователей и веб-сайтов при совместном использовании ресурсов из нескольких источников (домены, порты и протоколы).

CORS также позволяет веб-серверам явно разрешать межсайтовый доступ к определенным ресурсам, таким как JavaScript, в большинстве случаев JSON загружается из доменов, отличных от родительского источника.

Несколько лет назад запросы XMLHttpRequest обычно ограничивались одним и тем же доменом из соображений безопасности. Однако с помощью CORS браузеры и серверы могут определить безопасность выполнения запроса между источниками.

Типы запросов CORS

Существует два допустимых типа запросов CORS: простые и предварительные запросы.

Простой запрос

Этот метод запроса обычно содержит "GET", "POST" или "HEAD", а Content-Type в заголовке http имеет значение text/plain или application/x-www-form-urlencoded.

Этот запрос обычно отправляется непосредственно на сервер, который, в свою очередь, отвечает, принимает ли он запрос с помощью Access-Control-Allow-Origin в заголовке ответа Http.

Запрос на предварительную проверку

Если запрос не содержит метод «GET», POST или «HEAD», или если запрос является POST, но заголовок Content-Type не имеет тип application/x-www-form-urlencoded, или text/plain. Браузер отправляет на сервер запрос на проверку перед полетом.

Это дороже, чем обычный простой запрос CORS, поскольку необходимо выполнить два HTTP-вызова вместо одного.