Каждый frontend-разработчик рано или поздно сталкивается с так называемой ошибкой CORS. “No ‘Access-Control-Allow-Origin’ header is present on the requested resource” — знакомый текст, не правда ли? Попробуем разобраться, что он значит.
Эта ошибка возникает, когда вы пытаетесь загрузить ресурсы между разными источниками (cross-origin) — то есть расположенными на разных доменах/поддоменах, протоколах или портах. Разумеется, связана она с протоколами безопасности.
Представьте себе интернет, в котором нет ограничений на кросс-доменные запросы. Вы случайно попадаете на вирусный сайт — а там размещён скрипт, посылающий куда-то запросы от вашего имени. И вот злоумышленники уже заходят в ваш банковский личный кабинет и переводят деньги на свой счёт.
Проблема возникла, когда интернет перестал быть сугубо текстовым: появились теги, подгружающиеся уже после загрузки страницы и способные самостоятельно делать запросы. Поэтому в 1995 была введена политика одинакового источника (same-origin poli