Что такое CORS?
Все ответы из серии лучше бы молчал... Смысл повторять то, что написано в википедии. Вам в вопросе человек явно указал - НА ПАЛЬЦАХ, а они ему про стандарты... Дали бы просто ссылку на MDN - там самая лучшая документация обо всём: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
На русском тоже есть статьи: https://grishaev.me/cors
Вот моя текущая проблема, объсняю на её примере: 
На нашем сервере (Сервер А) размещается Ангуляр приложение (DAPP), представляющее собой интерфейс к Ethernet смарт-контракту, который грубо говоря является нашим бэкендом.
На стороннем сервисе (Сервер Б) запущен http-интерфейс для доступа к нашему контракту (фактически это шлюз в сеть Ethereum). Это бесплатный сервис, к которому у нас нет доступа (Infura).
Мне нужно из моего DAPP, запущенного в браузере пользователя и которое загрузилось с Сервера А, делать http-запросы на Сервер Б, и тут в браузере выскакивает CORS и кричит НИИИИЗЯЯЯЯЯЯЯЯ! Причём в Chrome всё ок, а в долбаном тормозном Firefox (господи, сократи число пользующиегося им идиотов, чтобы он скорее издох) вылетает ошибка. Ибо, как завещает CORS, негоже JS коду, загруженному с одного адреса, делать http запросы на другой. Причём CORS устроен так, что эта ошибка не дебажится с помощью JS - типа для того чтобы это ограничение не смогли никак обойти. Поэтому какие бы я не прописывал Серверу А заголовки 'Allow-Origin', это ничего не меняет. В Гугле уже осознали весь идиотизм ситуации и в новых версиях Хрома уже не блочат всё подряд, как раньше, пропуская  “простые” запросы (GET/POST), остальный браузеры пока тупят.
ПС. Проблему решили запуском прокси сервера, который добавляет в ответы от Сервера 2 заголовки Access-Controll-Allow-Origin с адресом Сервера 1. Тоесть Сервер 2 должен сказать браузеру, что он доверяет коду, загруженному с Сервера 1. Вот и весь CORS.
Это часть стандарта HTTP, HTTP-заголовки, которые сервер сайта возвращает клиенту, в том числе браузеру, давая понять, что разрешает HTTP-запросы (доступ к содержимому) со всех или только с заданных доменов (URL), но действует это только в браузере, то есть для запросов с клиентской стороны на страницах того сайта (JavaScript (AJAX), Flash, <iframe>), а если запрос делается с сервера, то ограничить невозможно, ограничениями "занимается" браузер именно, сервер ничем не отличается от обычного ПК. По умолчанию сервер (Apache/nginx) всегда запрещает доступ ко всем своим ресурсам, чтобы разрешить нужно отредактировать скрипты, чтобы к HTTP-ответу добавляли разрешающий заголовок для HTTP, и добавить разрешения в crossdomain.xml для Flash. Открытый же доступ бывает у "публичных" API, разрешающих такое использование, обычно они имеют "обертки" на JavaScript, внутри которых такие запросы.