Во -первых, давайте сделаем некоторые приготовления. В противном случае, если вы понимаете, о чем я, другие не понимают. Даже если другие поймут, то всегда будут люди, которые не понимают. Тогда вы должны это сказать. Я имею в виду, что это объяснение должно быть сделано. Ответ необходим. Чтобы облегчить понимание каждого.
Мы можем продемонстрировать перекрестные проблемы, взяв два основных доменных имена или одно основное доменное имя + доменное имя одного второго уровня в качестве примеров.
Клиент A.com
Сервер B.com или Sacom
Angularjs Версия V1.2.25
Приготовления были сделаны очень хорошо, и мы почти выявили нашего редактора как сублифу. Я не скажу ему этого обычного человека.
Кто -то кричал, что этот вопрос существует в течение долгого времени. Какой смысл спрашивать это сейчас? Может быть, ты все еще можешь обмануть цветы? Ну, я действительно могу написать цветы открытыми. Давайте посмотрим шоу, то, что мы собираемся выступить в этой статье, является полным примером междомена.
Далее, давайте посмотрим, как клиент запрашивает данные
Примечание, наш код записан под доменным именем A.com
<! Doctype html> <html lang = "en" ng-app = "app"> <head> <meta charset = "utf-8"> <title> </title> <script src = "./ angular.min.js"> </script> <script type = "text/javascript"> var app = angular.module []); app.controller ('appctrl', ['$ scope', function ($ scope) {$ http ({метод: 'jsonp', url: 'http://www.b.com/test.php?callback=json_callback',,) $ http.jsonp ('http://www.b.com/test.php?callback=json_callback') .success (function (msg) {console.log (msg);});Мы видим, что это перекрестный запрос непосредственно в форме JSONP, и его работа точно такая же, как метод перекрестного запроса в jQuery. Обратите внимание, что наш обратный вызов исправлен, то есть json_callback, постарайтесь не вносить никаких изменений
Давайте посмотрим на то, как Test.php обрабатывает запрошенные данные на сервере B.com. Здесь мы используем собственный метод PHP в качестве ссылки.
$ callback = isset ($ _ get ['' callback '])? $ _Get ['callback']: default_callback; exit ($ обратный вызов. '('. json_encode ($ data). ')');Давайте посмотрим на результаты клиентской консоли.
На данный момент мы успешно запросили по всему домену!
Наконец, давайте сделаем небольшое резюме и обратим внимание на ключевые моменты:
1. Параметр, добавленный после URL -адреса, запрашиваемого клиентом по доменам? Callback = json_callback. Значение обратного вызова параметра указано как json_callback. Обратите внимание, что он заглаживается, то есть json_callback, не вносит никаких изменений. Такое ощущение, что это большая яма. Если значение обратного вызова слегка изменяется, клиент должен определить функцию обратного вызова во всем мире, и как я могу передать ее в $ Scope для обработки? Чтобы избежать ненужных проблем, вот что значит делать
2. Посмотрите на сервер снова. Сервер должен указать $ callback = $ _get ['callback']; Получите обратный вызов, и вы также обнаружите, что полученный обратный вызов не является значением обратного вызова, написанного нашим клиентом. Клиент определяет json_callback, чтобы вызвать внутренний механизм AngularJ.