Межсайтовый AJAX с использованием jQuery
-
20-09-2019 - |
Вопрос
У меня есть существующий плагин jQuery, который выполняет множество AJAX-вызовов (в основном JSON).Мне интересно, как быстрее всего разрешить ему выполнять межсайтовые вызовы, т. е.URL-адреса $.get и $.post не будут принадлежать одному и тому же домену.
Я слышал о JSONP, но мне было интересно, может ли кто-нибудь привести мне конкретный пример для описания всего процесса.Я хочу внести минимальные изменения, если это возможно, в мой скрипт.Должен ли я использовать своего рода proxy.php?
Спасибо вам за уделенное время.
Решение
JSONP позволит вам выполнять межсайтовые вызовы. Смотрите документы jQuery по этому вопросу.
Концепция проста:вместо выполнения обычного Ajax-вызова jQuery добавит <script>
прикрепите тег к вашему <head>
.Чтобы это сработало, ваши данные JSON должны быть обернуты в вызов функции
.
Ваш сервер должен отправлять информацию таким образом (пример PHP):
$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $json . ');';
Затем вы можете использовать jQuery для извлечения этой информации:
$.ajax({
dataType: 'jsonp',
jsonp: 'jsonp_callback',
url: 'http://myotherserver.com/getdata',
success: function () {
// do stuff
},
});
Более подробная информация доступна здесь: Что такое JSONP?
Другие советы
Если у вас есть контроль над удаленным доменом или удаленный домен имеет разрешающий crossdomain.xml вы можете заглянуть в библиотеку, например флХЧР в сочетании с его Плагин jQuery.
Вы также можете использовать CORS вместо JSONP, работает с ff, Chrome, safari.CORS менее сложен в настройке и требует только фильтра на стороне сервера.
Пожалуйста, ознакомьтесь с этой статьей.Хорошо объяснено и похоже.Единственным ограничением является то, что IE не поддерживает эту и более старые версии FF, у Chrome также есть некоторые проблемы.
http://techblog.constantcontact.com/software-development/using-cors-for-cross-domain-ajax-requests/