Что такое CORS?

Здравствуйте, можете, пожалуйста, объяснить мне на пальцах кратко, что такое Cross-origin resource sharing
Читал википедию, w3, статьи, но так и не понял, что это такое, где и когда нужно использовать.
Для чего он вообще нужен?
Также буду признателен. если скажете название проектов, где используется CORS
  • Вопрос задан
  • 23593 просмотра
Решения вопроса 3
@DrVolk
Все ответы из серии лучше бы молчал... Смысл повторять то, что написано в википедии. Вам в вопросе человек явно указал - НА ПАЛЬЦАХ, а они ему про стандарты... Дали бы просто ссылку на 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.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Cross-Origin.... это значит "между хостами". То есть вы делаете запросы с "localhost:3000" на "localhost:8080" или с "example.com" на "google.com", или с "example.com" на "api.example.com".

Resource - тобишь ресурсы. Можете почитать что это такое в контексте REST или HTTP или URI.

Sharing - ну тут я думаю тоже должно быть понятно. "обмен". То есть это правила которые определяют "можно ли чуваку получить доступ к этому ресурсу".

Нужна эта штука для того что бы говорить "разрешает ли сервак запросы с этого орижина на этот ресурс".
Ответ написан
muhammad_97
@muhammad_97
PHP-разработчик
Заголовки, которые сервер посылает браузеру при AJAX-запросе.

Они необходимы для предотвращения несанкционированного доступа к данным пользователя, которые находятся на другом сервере.

technology.inmobi.com/blog/understanding-cross-ori...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rou1997
@Rou1997
Это часть стандарта HTTP, HTTP-заголовки, которые сервер сайта возвращает клиенту, в том числе браузеру, давая понять, что разрешает HTTP-запросы (доступ к содержимому) со всех или только с заданных доменов (URL), но действует это только в браузере, то есть для запросов с клиентской стороны на страницах того сайта (JavaScript (AJAX), Flash, <iframe>), а если запрос делается с сервера, то ограничить невозможно, ограничениями "занимается" браузер именно, сервер ничем не отличается от обычного ПК. По умолчанию сервер (Apache/nginx) всегда запрещает доступ ко всем своим ресурсам, чтобы разрешить нужно отредактировать скрипты, чтобы к HTTP-ответу добавляли разрешающий заголовок для HTTP, и добавить разрешения в crossdomain.xml для Flash. Открытый же доступ бывает у "публичных" API, разрешающих такое использование, обычно они имеют "обертки" на JavaScript, внутри которых такие запросы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽