Кросс-доменный запрос к localhost - PullRequest
3 голосов
/ 19 ноября 2010

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я уже рассмотрел различные подходы к решению моей проблемы, поэтому, пожалуйста, прочитайте это, прежде чем пометить это как дублирующий вопрос

У меня есть JavaScript, работающий на https://xyz.com, который должен извлекать информацию из приложения ABC, работающего на локальном компьютере пользователя, например, через порт 8080.

Мои ограничения заключаются в том, что я не могу изменить заголовки HTTP, исходящие из ABC, и при этом я не хочу, чтобы пользователь устанавливал другое приложение, которое будет средством передачи моих запросов на ABC.

Параметры междоменных / оконных сообщений

a) window.postMessage: Исключено, поскольку у меня не может быть запущен сценарий на локальной машине
b) Объект XDR (IE) или Access-Control-Allow-Origin (Firefox, Safari и др.): Исключено, поскольку я не могу изменить заголовок
c) JSONP: Опять же, это не сработает, поскольку я не могу заключить ответ в имя функции

В качестве обходного пути, предназначенного только для тестирования, я добавил http://xyz.com в список доверенных и включил Access Data Across Domains для сайтов в этом списке. AFAIK, эта опция доступна только в браузерах IE 5+. Этот обходной путь позволяет мне отправлять и получать сообщения от http://127.0.0.1:8080
alt text

У меня вопрос двоякий
1) Если я продолжу использовать вышеупомянутый подход, когда начну работу, каковы последствия для безопасности, которым я подвергаю пользователя? Могу ли я закрыть эти отверстия?
2) Есть ли другие варианты, которые я могу использовать для достижения своей цели.

PS: Я бы хотел быть как можно дальше от ActiveX или Flash, но в случае, если это единственная работоспособная альтернатива моему нынешнему подходу, мне придется придерживаться строки

Приветствия

Ответы [ 2 ]

1 голос
/ 28 ноября 2010

Если локальное приложение может обслуживать один HTML-документ, выступая в качестве моста, вы можете легко использовать Cross-Document Messaging (например, с easyXDM ) вместе с запросами ajax из этого документа, чтобы сделатьэтот.Это очень простой и часто используемый подход.

easyXDM на самом деле поставляется с таким документом, о нем вы можете прочитать здесь .

0 голосов
/ 19 ноября 2010

Я думаю, что проще всего было бы поставить серверный скрипт на https://xyz.com, который будет служить мостом между файлом javascript и ABC.Затем файл javascript просто отправит запрос AJAX на собственный серверный скрипт, который позаботится о получении информации из удаленного домена.Единственное другое жизнеспособное решение, которое работает в большинстве браузеров и не требует использования какой-либо клиентской технологии, такой как Flash или ActiveX, - это JSONP, но вы исключили это из-за отсутствия контроля над удаленным доменом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...