Сделать междоменный запрос XML из локального файла

Я не уверен, возможно ли это вообще. В основном я хочу загрузить локальный html-файл на клиентский ПК и сделать запрос на удаленный сервер. Данные, обслуживаемые сервером, представляют собой XML.

Когда я говорю, что загружаю файл, я имею в виду, что URL-адрес в chrome отображается как «file:///E:/…».

Это самое близкое, что я смог загрузить XML. Я проверил вкладку сети на стороне клиента и успешно загрузился, я просто не могу получить XML в элемент, который я могу проверить:

 var script = document.createElement('script');

 script.setAttribute('src', 'http://xxx.xx.xx.xxx:xxxx/myxmldata');

 script.setAttribute('type', 'text/xml');

 script.setAttribute('id', 'myxml');

 document.getElementsByTagName('head')[0].appendChild(script); 

 var content = document.getElementById("myxml").responseText;// anything I can do here?

 console.log(content);

Решение AJAX тоже сработает. Мне не повезло с JSONP (хотя это не JSON).


person Sean Thoman    schedule 12.01.2012    source источник
comment
Глупый вопрос, вы делаете вызов Ajax на удаленный сервер в другом домене?   -  person sfratini    schedule 12.01.2012
comment
Да. Мне нужно обойти ту же политику происхождения. Кроме того, это просто локальный файл, открытый в браузере, а не страница, обслуживаемая веб-сервером.   -  person Sean Thoman    schedule 12.01.2012
comment
Привет, Шон, не могли бы вы подвести итог, какое решение вы придумали?   -  person YakovL    schedule 15.04.2016


Ответы (2)


Что ж, если у вас возникли проблемы с междоменной политикой, вам может потребоваться создать какой-то прокси-сервер, который будет выполнять запрос за вас. (Его довольно просто сделать)

Если вы хотите открыть файл JavaScript, чтобы сделать запрос Ajax, я бы использовал Dojo для анализа XML.

Вот хороший пример: http://dojotoolkit.org/reference-guide/dojo/xhrGet.html

Надеюсь, поможет.

person sfratini    schedule 12.01.2012
comment
Привет, sfratini, не могли бы вы предоставить дополнительную информацию о том, как создать такой прокси? - person YakovL; 15.04.2016
comment
Извините, я был в отпуске. Я оставлю это здесь, так как это может быть полезно для других. Обычным ограничением ajax является выполнение запросов к серверам, которые не используют одно и то же имя хоста. Это проблема безопасности. Вы можете решить эту проблему, добавив доступ к вашему сценарию на сервере, но обычно это невозможно. Но вы можете сделать запрос к сервлету, и это фактически сделает запрос для вас. В Java вы делаете это с помощью классов URL и Connection на сервере. Таким образом, вы не блокируете клиентский браузер, поскольку отправили другой поток с запросом ajax на свой сервлет. - person sfratini; 30.04.2016

Независимо от типа полезной нагрузки JSON или XML, вы делаете JSONP, а результатом является вызов функции javascript. Таким образом, ответ должен быть действительным вызовом функции javascript с данными XML в качестве входных данных для этой функции.

person dbrin    schedule 12.01.2012