Согласно caniuse.com и opera.com, Opera Mini не поддерживает CORS. Есть ли обходной путь? Могу ли я сделать запросы AJAX из/в другой домен или, по крайней мере, в субдомен в AngularJS?Обходной путь из-за отсутствия поддержки доменов AJAX в Opera Mini
ответ
Используйте один из следующих обходных путей:
window.name
может использоваться для обмена данными между доменами. Например:window.name=window.StackExchange; window.location="http://www.example.com"; console.log(window.name);
Любое решение имеет свои недостатки, но никто, кроме Opera не позволяет
data:URI
, который не находится на том же домене. Как толькоparseURI
может быть выполнен в сочетании сdata:URI
, возможности бесконечны - и очень сложно определить происхождение и содержание полезной нагрузки.Используйте
data:URI
с HTML-документом, который загружает оригинальную страницу Разобрать документ XML из местоположения идентифицированной ссылки URI [IETF RFC 2396] с помощью XHRparseURI
. Если URI содержит идентификатор фрагмента (см. Раздел 4.1 в [IETF RFC 2396]), поведение не определяется этой спецификацией, будущие версии этой спецификации могут определять поведение.
function loadDataForVersion(core_version)
{
var features_doc = document.implementation.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, "").parseURI("features."+core_version+".xml");
var feature_nodes = features_doc.evaluate("//feature", features_doc, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var feature_node;
while (feature_node = feature_nodes.iterateNext())
{
addFeatureNode(features_doc, feature_node, core_version);
}
}
Асинхронный
LSParser
объекты, как ожидается, также реализуют интерфейс событий :: EventTarget так, что слушатели событий могут быть зарегистрированы на асинхронныхLSParser
объектов.События поддерживаются асинхронными
LSParser
объектами являются:нагрузка
В
LSParser
завершении загрузки документа. См. Также определение интерфейсаLSLoadEvent
.прогресс
Прогресс
LSParser
сигналов в качестве данных обрабатываются.В этой спецификации не делается попытка точно определить, когда должны быть отправлены события прогресса. Это намеренно оставлено как зависящее от реализации. Ниже приведен пример того, как приложение может отправлять события прогресса. Когда парсер начинает получать данные, отправляется событие прогресса, указывающее, что начинается синтаксический анализ. Оттуда отправляется событие прогресса на каждые 4096 байт данных, которые принимаются и обрабатываются. Это только один пример, и реализация может в любой момент отправлять отчеты о прогрессе во время разбора или вообще не отправлять их.
Запрос вызывается с помощью (обратный вызов, URL) функциями CSSHttpRequest.get:
CSSHttpRequest.get(
"http://www.nb.io/hacks/csshttprequest/hello-world/",
function(response) { alert(response); }
);
данные кодируются на сервере в кодированные URI 2KB куски и сериализованные в CSS @import с модифицированной схемой
about:URI
. Ответ декодируется и возвращается к функции обратного вызова в виде строки
Ссылки
ничего себе. раздутый ум – aWebDeveloper
Вы пробовали 'jsonp'? Хотя вам нужно довольствоваться только методом GET. –
i не могу использовать jsonp – aWebDeveloper