Я столкнулся с перекрестной проблемой два дня назад, и ее можно решить с помощью JSONP. (//www.vevb.com/article/57889.htm)
Я разобрался недавно:
1.Jsonp.
AJAX запрос, DataType - это JSONP. Эта форма требует, чтобы запрос был скорректирован в форму, которая возвращает обратный вызов ([json-object]) на стороне сервера. Если сервер возвращает обычный объект JSON. Затем при отладке будет сообщена ошибка «Неучтенный синтаксис -борьбу: неожиданный токен» будет представлена на консоли браузера Chrome; Ошибка «Синтаксисерр: пропал без вести; до операции» будет сообщена в консоли браузера Firefox.
2.Фраме кросс-домен.
Добавьте элемент iframe на страницу. Когда вам нужно позвонить в запрос GET, установите SRC IFRAME на URL -адрес запроса GET, чтобы инициировать звонок в запрос GET.
Кода -копия выглядит следующим образом:
var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$ ("#iframe"). attr ("src", url); // cross-domain, используйте iframe
Метод iframe сильнее JSONP. В дополнение к возможности обрабатывать HTTP -запросы, он также может реализовать вызовы JS по доменам.
3. Обработка атрибутов SRC элементов сценария
Атрибуты SRC IFRAME, IMG, стиль, сценарий и другие элементы могут напрямую запрашивать ресурсы из разных областей. JSONP-это простая реализация ресурсов для перекрестных запросов с использованием тегов сценариев. Следовательно, это, по сути, то же самое, что и JSONP, и это также требует, чтобы сервер запросил форму обратного вызова ...
Кода -копия выглядит следующим образом:
var url = "http://xxx.xxx.xxx?p1=1";
var script = document.createElement ('script');
script.setattribute ('src', url);
document.getElementsbytagname ('head') [0] .appendchild (script);
4. Используйте обработку на сервере.
Для тех, у кого нет никаких жестких требований к обработке на фронт-конце, они могут инкапсулировать их на сервере, а затем инициировать вызовы на сервере, которые могут решить проблему с доменом. Затем, основываясь на том, выдается ли запрос или необходимо получить возвратное значение, мы решим, использует ли код синхронный или асинхронный режим.
Кода -копия выглядит следующим образом:
Private Static void creategethttpresponse (string url, int? Timeout, String Useragent, cookiecollection cookie)
{
if (string.isnullorempty (url))
{
бросить новый аргумент.
}
var request = webRequest.create (url) как httpwebrequest;
request.method = "Get";
if (! String.isnullorempty (userAgent))
{
request.Useragent = userAgent;
}
if (timeout.hasvalue)
{
request.timeout = timeout.value;
}
if (cookies! = null)
{
request.cookiecontainer = new cookiecontainer ();
request.cookiecontainer.add (cookies);
}
request.begingetresponse (null, null); // асинхронно
// return request.getResponse () как httpwebresponse;
}
5. флаш-междомен
Слишком передовый ==, изучите его снова
Резюме: вышеупомянутые 5 методов являются общими способами решения междоменных задач JS. Последний относительно высокий. Давайте восполним это после того, как я четко изучал это.