Показать сообщение отдельно
  #4 (permalink)  
Старый 23.02.2018, 17:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Николай Волков, почему не работает написано английским по белому: "No 'Access-Control-Allow-Origin' header is present on the requested resource." - "Никакого заголовка 'Контроль доступа, разрешить для источника' нет на запрашиваемом ресурсе."
Другими словами ресурс не указал никаким образом, что с него можно хоть что-то забирать клиентским скриптам с других сайтов. А по умолчанию - нельзя.

Предложенный же вариант называется jsonp, и является просто подключением стороннего скрипта на ваш сайт. Весь вышеприведённый код по сути делает:
<script>
function __jsonp_dynamic_callback_random(json){
    res(json);
    delete window.__jsonp_dynamic_callback_random;
};
</script>
<script src="//kladr-api.ru/api.php?query=Арх&contentType=city&withParent=1&limit=3&callback=__jsonp_dynamic_callback_random"></script>
Где res - ваша функция.
Сервер же на своей стороне просто оборачивает отдаваемый json в вызов функции, имя которой передано в параметре callback, т.е. возвращает:
__jsonp_dynamic_callback_random({
  "result": "ответ"
});


Jsonp использовался задолго до того, как стало возможным междоменное взаимодействие. Плюсы - простота и возможность использовать где угодно. Минусы же - безопасность. Если сайт скомпрометирован, то вам может прилететь не только нужный ответ, но и произвольный кусок кода.
__________________
29375, 35

Последний раз редактировалось Aetae, 23.02.2018 в 17:06.
Ответить с цитированием