Давайте разберем проблему и попытаемся понять основы CORS.
Что такое запрос перекрестного происхождения и CORS?
Запрос перекрестного происхождения: запрос наРесурс (например, изображение или шрифт) за пределами источника известен как запрос перекрестного источника.
CORS полезен, когда вы запрашиваете защищенный ресурс из другого источника.
Совместное использование запроса между источниками. Запрос ресурса защищенный (например, изображения, шрифта или XHR-запроса) за пределами источника называется перекрестным источником.request.
Зачем нам CORS, если ресурсы можно защитить с помощью токенов аутентификации / авторизации?
CORS - это первая линия защиты.Когда и клиент (например, браузеры), и серверы поддерживают CORS, клиенты будут разрешать только запросы от определенных источников к серверам в соответствии с инструкциями серверов.
По умолчанию в браузерах должен быть реализован механизм безопасности политики одного и того же происхождения в соответствии с рекомендациями по созданию браузера.Почти все современные браузеры реализуют политику одного и того же источника, которая инструктирует браузеры разрешать запросы к серверам, если источник один и тот же.
Политика одного и того же источника - это механизм безопасности браузера, вы можете прочитать больше оэто здесь .Именно из-за этой функции браузеров браузер блокирует все запросы, когда источник обозначения и источник источника различаются.(Серверы даже не осознают, что это происходит, вау!)
Для более простых случаев использования, когда ресурсы (js, CSS, изображения, шрифты), ресурсы XHR доступны с тем же источником, нетнужно беспокоиться о CORS.
Если ресурсы размещены на другом источнике или ресурс XHR размещен на серверах с другим доменом, отличным от исходного, браузеры по умолчанию не отклонят запрос на перекрестное происхождение.Только с соответствующими заголовками запросов и ответов CORS браузерам разрешается делать запросы с разными источниками.
Давайте рассмотрим заголовки запросов и ответов.
Заголовки запросов
- Происхождение
- Метод контроля доступа-запроса
- Заголовки запроса-контроля доступа
Заголовки ответа
- Контроль доступа-Разрешить происхождение
- Контроль доступа-Разрешить-учетные данные
- Доступ-Control-Expose-Headers
- Access-Control-Max-Age
- Access-Control-Allow-Методы Access-Control-Allow-Headers
Для настройкиCORS нужны заголовки Origin
и Access-Control-Allow-Origin
.Браузеры автоматически добавляют заголовок Origin
к каждому запросу, поэтому разработчику необходимо настроить только заголовок ответа Access-Control-Allow-Origin
.
Для защиты доступа к ресурсам только из определенных доменов S3 предоставляет возможность настройки правил CORS.Если значение заголовка Access-Control-Allow-Origin
равно *
, разрешены все запросы кросс-источников, или же задайте список доменов через запятую.
Есть пара вещей, о которых вам нужно знатьпри использовании CORS.
- Это первый уровень защиты защищаемого ресурса, а не окончательная защита.
- Вам все еще необходимо внедрить соответствующую аутентификацию и авторизацию для ресурса для выполнения операций CRUD на сервере..
- Реализация одной и той же политики происхождения является руководством для построения браузера и не является обязательной.
- Заголовки CORS полезны только тогда, когда клиенты принимают заголовки.Только современные браузеры принимают заголовки CORS.Если вы не используете браузеры для запроса ресурсов, то CROS не применяются.
- Если вы введете ссылку в адресной строке браузера, правила CORS не будут применяться, поскольку браузер не отправляет заголовок
Origin
на сервер.Заголовок Origin
отправляется браузером только на последующий запрос ресурса (таблицы стилей, файлы js, шрифты) и запросы XHR источником.- Если вы обращаетесь к файлу ресурса, непосредственно набрав ссылку в адресной строке, браузер не отправляет заголовок
Origin
на этот запрос.
Также, еслиВы хотите ограничить доступ GET, используя предварительно подписанный URL-адрес S3 в приватной корзине.