1. Что такое кросс-домен?
Поскольку браузер принимает одинаковые ограничения политики в отношении политики по соображениям безопасности, jQuery не может напрямую эксплуатировать объекты или данные между доменными именами. Например: A.com
Страница A.HTML не может управлять объектами или данными страницы B.HTML под доменным именем B.com с использованием jQuery, и по умолчанию доменное имя Test.com не может быть выполнено.
Объект или данные test.html. Пока JQUERY соответствует следующим условиям, это будет считаться перекрестным именем:
1. Основной домен одинаково, поддомен отличается, например, xxx.aaa.com и yyy.aaa.com
2. Доменное имя одинаково, но порты разные, такие как xxx.aaa.com:8000 и xxx.aaa.com
3. доменное имя одинаково, но протокол отличается, например, http://www.aaa.com/ и https://www.aaa.com/
Только если протокол, доменное имя и порт точно одинаковые JQUERY, будут считаться не перекрестным именем.
2. Решение JQUERY CROSS-DOMEAN ИМЯ
1. ситуация первого прибытия доменного имени верхнего уровня
По умолчанию страница A.HTML под доменным именем A.Com не может управлять объектом test.html или данных в рамках доменного имени Test.com. Но для той же ситуации, что и доменные имена высшего уровня, просто сбросить документ. Domain = a.com в a.html и test.html.
2. ситуация, когда доменные имена верхнего уровня разные
Существует два метода для страницы A.HTML под доменным именем A.Com, $ .getJson и $ .ajax
(1) Крест-домен через AJAX JQUERY, который фактически реализуется с использованием метода JSONP.
JSONP - это аббревиатура JSON с прокладкой на английском языке. Это позволяет генерации тегов скрипта на стороне сервера возвращаться к клиенту, то есть динамически генерирует теги JavaScript.
Чтение данных реализуется посредством формы обратного вызова JavaScript.
Пример кода для HTML -страницы:
Код заключается в следующем:
// Во-первых, вам нужно представить jQuery (Document) .ready (function () {$ .ajax ({type: «Get», // jquey не поддерживает метод пост-кросс-домен асинхро «JSONP», // вставлен в обработчик запроса, чтобы получить имя параметра функции функции обратного вызова JSON выполнено динамически.Пример кода на стороне сервера, возьмите Java в качестве примера:
Код на стороне сервера является ключевым моментом. Первоначально я думал, что до тех пор, пока клиент может напрямую доступ к доменам через JSONP, это не так, и требуется поддержка на стороне сервера.
Код заключается в следующем:
public void jsonptest () бросает ioException {httpservletrequest request = servletactioncontext.getRequest (); Httpservletresponse response = servletactionContext.getResponse (); // Получить имя функции обратного вызова на основе имени параметра функции обратного вызова JSONP, указанной HTML // Значение CallbackName на самом деле: Success_jsonpcallback String altbackname = (String) request.getattribute ("jsoncallback"); // Смоделируют строку JSON. На самом деле, вы можете использовать Google GSON, чтобы преобразовать его. Количество раз пропалодается через строковую сплайсинг // {"name": "Zhang San", "AGE": 28} /// Это должно избежать "Sign. String Jsonts =" {/"name/":/"Zhang San/",/"Age/": 28} "; // Окончанные данные: uscon_jsonpcallback ({wome:" zhame ": SAN "," AGE ": 28}) string renderstr = callbackname+" ("+jsonstr+") "; response.setContentType (" text/plain; charset = utf-8 "); response.getWriter (). Write (renderstr);};};};};};};Принцип JSONP:
Сначала зарегистрируйте обратный вызов (например, «jsoncallback») на клиенте, а затем передайте имя обратного вызова (например,: uscess_jsonpcallback) в соответствующую функцию обработки на стороне сервера.
Сервер генерирует данные JSON, которые необходимо возвращать клиенту. Затем, в форме синтаксиса JavaScript, генерируется функция, и имя функции является значением передачи параметра (jsoncallback) (success_jsonpcallback).
Наконец, данные JSON помещаются непосредственно в функцию в качестве параметра, тем самым генерируя документ синтаксиса JS и возвращая его клиенту.
Клиентский браузер анализирует тег скрипта и использует данные, возвращаемые сервером в качестве параметра.
Он передается в функцию обратного вызова, предопределенную клиентом (как в приведенном выше примере успех: функция (JSON), инкапсулированная методом jQuery $ .ajax ()).
Фактически, междомен загружает данные путем динамического добавления сценариев, и данные не могут быть получены напрямую, поэтому необходимы функции обратного вызова.
(2) Используйте Getjson от jQuery для чтения данных по доменам
Фактически, фундаментальный принцип метода Getjson такой же, как Ajax использует JSONP.
Getjson обычно используется в JQUERY, чтобы позвонить, чтобы получить удаленные данные и вернуть их через формат JSON. Прототип функции заключается в следующем:
jquery.getjson (URL, данные, успех (данные, статус, XHR))
Описание параметра
URL требуется. Указывает, какой URL отправлять в запрос.
Данные необязательны. Определяет данные, отправленные на сервер вместе с запросом.
Успех (данные, статус, XHR) является необязательным. Определяет функцию для выполнения, когда запрос успешно.
Дополнительные параметры:
-ответ - содержит данные результатов из запроса
Status - содержит статус запроса
XHR - содержит объект xmlhttprequest
Эта функция является сокращенной функцией AJAX, которая фактически эквивалентна:
Код заключается в следующем:
$ .ajax ({url: url, данные: данные, успех: обратный вызов, dataType: json});Давайте вернемся к делу, давайте посмотрим, как использовать Getjson для получения данных в разных доменах.
Пример кода для HTML -страницы:
Код заключается в следующем:
$ .getJson ("http://api.vevb.com/apitools/ajax_props.do&jsoncallback=?", function (data) {alert (data);});Принцип исполнения:
При отправке запроса вам нужно передать имя функции обратного вызова обратного вызова на сторону сервера. Сторона сервера получает имя функции обратного вызова, а затем возвращает данные возврата клиенту в форме параметров, чтобы клиент мог позвонить им.
Следовательно, после адреса URL -адреса запроса вы должны использовать параметр, такой как jsoncallback =?, И jQuery автоматически заменит? номер с именем автоматически сгенерированной функции обратного вызова.
Таким образом, окончательный фактический запрос: http://api.vevb.com/apitools/ajax_props.do&jsoncallback=jsonp1322444422697
Поэтому, если вы хотите сравнить его с методом AJAX, то есть функция обратного вызова является одним из автоматически сгенерированных имен функций, а другой - указанные вручную имена функций.
Обратите внимание на следующие моменты:
1. Адрес, отправленный получателю данных, должен быть добавлен с параметром, таким как обратный вызов =?, И это? это имя метода обратного вызова, который будет автоматически заменен JQUERY. (В JQUERY 1.4 вы можете самостоятельно указать название метода обратного вызова)
2. Обратите внимание, что данные, отправленные сценарием JS, не могут быть записаны как var data = "{'username': 'sanjer', 'userid': '110'}"; но следует записать как var data = {username: 'sanjer', userid: '110'}, и вы должны обратить внимание на этот момент. Чтобы получить данные, возвращаемые сервером, сервер должен инкапсулировать данные в строку формата JSON и вернуть их вместе со значением обратного вызова. (Пожалуйста, внимательно прочитайте приведенный выше пример кода).
3. При вызове метода $ .getjson от $ .getjson есть своя собственная обработка, которая фактически запрашивается через SCR Script, но вы должны знать, что данные, наконец, отправляются через URL через GET. Это определяет, что объем отправленных данных не может быть слишком большим, иначе URL -адрес не может получить их слишком долго (невозможно отправить их в методе Post, когда будет представлен метод Getjson).
Если вы хотите отправить большие данные по доменам, вы можете выбрать метод Ajax, предоставленный JQuery, и лучше не использовать метод GetJson.
4. Приведенные выше примеры основаны на предпосылке, что оба аспекта развития находятся под вашим контролем. Кроме того, будьте осторожны, чтобы коэффициент безопасности серверной программы не высок (рекомендуется не размещать важные и конфиденциальные логические единицы обработки на получение данных).
Приведенный выше метод Java в сочетании с JQUERY для получения данных о приобретении имени междомена-это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.