JSON кросс-сайт без JSONP - PullRequest
       5

JSON кросс-сайт без JSONP

2 голосов
/ 16 августа 2011

У меня есть локальное оборудование, к которому я обращаюсь по его IP-адресу для получения данных JSON.

Я создаю веб-приложение, но оно не может получить доступ к локальным данным json, когда приложение работает в Интернете из-за проблем с несколькими доменами.

Есть ли подходящее решение, чтобы сделать данные JSON доступными для веб-приложения?

Я использую jQuery для локального чтения файла JSON.

Аппаратное обеспечение в настоящее время не обеспечивает JSONP.

Заранее спасибо.

Ответы [ 5 ]

4 голосов
/ 16 августа 2011

Вы можете использовать его с помощью PHP / ASP / etc. страница на вашем локальном сайте, которая (в конце) будет запрашивать удаленную информацию. Это позволит вам вызвать somesite.com/getForeignData (который фактически вызывает othersite.com/foreignData) и вернуть его в том же домене.

Кроме этого, вам понадобится использовать JSONP (это преднамеренно установленная граница). «Последний» вариант - разрешить международные звонки в вашем браузере, но если вы хотите, чтобы другие имели такую ​​же возможность, это только временное решение.

1 голос
/ 16 августа 2011

Можете ли вы добавить заголовок в ответ HTTP?Если да, добавьте следующее значение

Access-Control-Allow-Origin со значением *

, тогда ваш браузер разрешит запрос этого ресурса

0 голосов
/ 16 августа 2011

Если ваш URL выглядит примерно так http://>/RequestedJson, тогда вы можете использовать flXHR , что весьма удобно.

1) Импортировать библиотеки flXHR
2)Просто создайте экземпляр flXHR
3) Затем назначьте его опциям jQuery Ajax

$.ajaxSetup({
   "xhr": myflXHRInstance
});

(подробнее на странице ajaxOptions )
4) Поместите файл crossdomain.xml вкорень вашего ip, т.е. http://>/crossdomain.xml Подробнее о crossdomain.xml

5) Наслаждайтесь вашими междоменными запросами через jQuery))

PS Требуется прошивкаПлагин будет установлен.Почти нет браузеров, в которых не установлен плагин Flash player. Riastats

EDIT: Извините за русскую ссылку для crossdomain.xml.
Пример Crossdomain.xml

0 голосов
/ 16 августа 2011

Как сказал Брэд, использование прокси - это путь. Вот еще немного информации о прокси:

http://developer.yahoo.com/javascript/howto-proxy.html

Если у вас есть доступ к php-серверу, я могу порекомендовать прокси по номеру http://www.troywolf.com/articles/.. Вам потребуется следующее:

0 голосов
/ 16 августа 2011

Вы можете создать локальный прокси.

Например, если ваше веб-приложение работает на www.example.com, создайте небольшой серверный компонент, который откликается на www.example.com/hardware.

.

Затем, после вызова этого URL, серверный компонент выполняет прямой запрос к оборудованию и возвращает его вызывающему веб-приложению.

На что обратить внимание:

  • Если ответ большой или оборудование медленное, вашему прокси-серверу может потребоваться много буферизации. Если вы хотите найти решение, которое масштабируется, вам нужно быть осторожным.
  • Вы можете выполнять кэширование данных на прокси-сервере, чтобы снизить нагрузку на оборудование
  • Вы можете массировать данные перед отправкой в ​​веб-приложение в прокси-сервере. Например, измените с JSON на XML или наоборот. Или даже предварительно отформатировать его в HTML ...
...