Совместное использование ресурсов и файлов разных источников://
Я пишу приложение HTML5, которое собирает данные из нескольких разных источников с помощью JSONP. Все, что я делаю с GET, работает отлично. Теперь я пытаюсь опубликовать данные, и я столкнулся с интересной проблемой. Мне нужно отправлять данные из моего приложения в другое, где мое приложение работает с локальной машины. Я пытаюсь написать кросс-платформенное мобильное приложение (think Pulse / Flipboard), поэтому код всегда будет работать из локального источника. Моя мысль процесс был следующим:
- использование JSONP-JSONP не позволяет размещать, он просто не работает таким образом (опубликовать данные в JsonP)
- положитесь на CORS-так как запрос поступает из локального источника с использованием
file://
, заголовок origin равен null. Это приводит к сбою запроса (ошибка XmlHttpRequest: Origin null не разрешен Access-Control-Allow-Origin) - используйте другой сервер для отскока запроса - это будет дорогой
все браузеры, на которые я ориентируюсь, основаны на webkit (iPad, Playbook, Android), поэтому мне интересно, есть ли какие-либо скрипы в том же коде политики origin, через который я могу прокрасться? Может быть, что-то с использованием iframe или postMessage?
2 ответов
Как оказалось, самый простой способ сделать это-опубликовать целевой url-адрес внутри iframe. Такая же политика происхождения в большинстве браузеров позволяет выполнять HTTP-сообщение из одного домена в другой несвязанный домен. Я решил проблему, добавив iframe на свою страницу, изначально настроенную на локальную страницу начальной загрузки. Поскольку эта страница была загружена из того же домена, я могу управлять ею с помощью скрипта. Я использовал это для публикации формы на моем целевом сайте и опросил результаты, чтобы определить, мой звонок удался. Это не элегантно, но работает.
эта библиотека Javascript почти наверняка поможет вам:
easyXDM - это библиотека Javascript, которая позволяет вам, как разработчику легко обойти ограничение, установленное в место по той же политике происхождения, в поверните сделать его легким связывать и предоставление API javascript в разных доменах границы.
..
на ядре easyXDM обеспечивает транспортный стек, способный проходящий строковые сообщения между двумя windows, потребитель (основной документ) и провайдера (документ включено использование iframe). Это с помощью одного из нескольких доступных техники, всегда выбирающие самые эффективный для текущего браузера. Для всех реализаций transport стек предлагает двунаправленность, надежность, очередность и отправитель-проверка.